当使用多个单词标签时,django-taggit 404

时间:2018-02-05 19:35:33

标签: wagtail django-tagging

我正在实施taggit标签来创建页面的往返。我使用了面包店演示中的示例代码。问题是我需要带有多个单词的标签,比如像“设计思维”这样的两个单词。后端覆盖整齐,创造了一个设计思维的slu ..但是列表视图不起作用。 它适用于单字标签,但双字标签给我一个404.

尝试在面包店演示中是否有效,但出现了同样的问题。 这在某种程度上是好的,这意味着我没有做错任何事。只是没有解决方案。

有没有人解决过这个问题?

1 个答案:

答案 0 :(得分:2)

看来URL匹配的正则表达式已设置为假设标签slug中只有一个单词。

这意味着除了单个单词标签之外,路由总是会失败。

原始代码

@route('^tags/$', name='tag_archive')
@route('^tags/(\w+)/$', name='tag_archive')
def tag_archive(self, request, tag=None):
    #...

说明

请注意,匹配my-blog/tags/some-awesome-tag/网址的正则表达式只匹配单个word。正则表达式中的单词由\w表示,不包含空格或短划线。

但是,一组单词或短划线看起来像[\w-]方括号表示匹配这些括号中的任何一个,而破折号表示也匹配破折号。

新代码

最终的新路线装饰将如下所示:

@route('^tags/$', name='tag_archive')
@route('^tags/([\w-]+)/$', name='tag_archive') # this line changed
def tag_archive(self, request, tag=None):
    #...

注意:在bakerydemo中提交PR来解决此问题。