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

django-taggit 404 when using multiple word tag

我正在实施 taggit 标签来创建页面的往返行程。我使用了 bakery-demo 中的示例代码。问题是我需要有多个词的标签,比如 'Design Thinking' 这样的两个词。后端巧妙地覆盖了这一点,创建了一个 slug 'design-thinking'。但是列表视图不起作用。 它适用于单字标签,但双字标签给我一个 404。

在bakery-demo中试过是否有效,但还是出现了同样的问题。 这在某种程度上是好的,这意味着我没有做错任何事。只是没有解决方案。

有人解决过这个问题吗?

URL 匹配的正则表达式似乎已设置为假定标签段内只有一个词。

这意味着路由总是会因超过单个单词标记的任何内容而失败。

原代码

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

说明

请注意,匹配 my-blog/tags/some-awesome-tag/ 中的 URL 的正则表达式只会匹配一个 word。正则表达式中的单词由 \w 表示并且不包含空格或破折号。

然而,一组单词或破折号看起来像 [\w-] 方括号表示匹配这些括号内的任何内容,破折号表示也匹配破折号。

新代码

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

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

注意:已提交 PR 以修复 bakerydemo 中的此问题。