我正在实施taggit标签来创建页面的往返。我使用了面包店演示中的示例代码。问题是我需要带有多个单词的标签,比如像“设计思维”这样的两个单词。后端覆盖整齐,创造了一个设计思维的slu ..但是列表视图不起作用。 它适用于单字标签,但双字标签给我一个404.
尝试在面包店演示中是否有效,但出现了同样的问题。 这在某种程度上是好的,这意味着我没有做错任何事。只是没有解决方案。
有没有人解决过这个问题?
答案 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来解决此问题。