【问题标题】:django-taggit 404 when using multiple word tagdjango-taggit 404 使用多个单词标签时
【发布时间】:2018-02-05 19:35:33
【问题描述】:

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

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

有人解决了这个问题吗?

【问题讨论】:

    标签: wagtail django-tagging


    【解决方案1】:

    似乎 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/ 的 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 中解决此问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-14
      • 1970-01-01
      • 1970-01-01
      • 2016-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多