0

我正在实现 taggit 标签来创建页面的往返。我使用了 bakery-demo 中的示例代码。问题是我需要带有多个单词的标签,比如“设计思维”这样的两个词。后端巧妙地涵盖了这一点,创造了一种“设计思维”。但是列表视图不起作用。它适用于单字标签,但双字标签给我一个 404。

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

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

4

1 回答 1

2

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

这意味着该路由总是会因为一个单词标签以上的任何东西而失败。

原始代码

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

解释

请注意,匹配 URL 的正则表达式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):
    #...

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

于 2018-02-05T23:24:03.730 回答