【问题标题】:Url template tag raises NoReverseMatch error but the generated url is correctUrl 模板标签引发 NoReverseMatch 错误但生成的 url 是正确的
【发布时间】:2016-02-24 01:41:25
【问题描述】:

我不能使用 {% url %} 在 Django 模板中生成 url。我收到以下错误:

Reverse for 'category' with arguments '()' and keyword arguments '{'category_name_slug': ''}' not found. 1 pattern(s) tried: ['rango/category/(?P<category_name_slug>[\\w\\-]+)/$']

这是我使用标签的方式:

{% url 'rango:category' category_name_slug=category.slug %}

这是相对 url() 的定义:

url(r'^category/(?P<category_name_slug>[\w\-]+)/$', views.category, name='category')

有趣的是,如果我使用 category.id 而不是 slug 它可以工作,但是生成的 url 当然没有太多类别,因为“slug”,而不是 id预期在视图中。

如果我使用标签 as 就更奇怪了

 {% url 'rango:category' category_name_slug=category.slug as slug %}
 {{ slug }}

那么生成的 url 是正确的,不会引发错误。

读取错误似乎没有作为关键字参数传递。

有什么想法吗?

【问题讨论】:

  • 由于使用category.id 不会导致错误,'{'category_name_slug': ''}' 建议您有一个没有 slug 集的类别。检查数据库中的值。
  • 该死!你说得对!我之前考虑过,我也通过在模板中打印出 category.slug 字段来检查(代码中没有显示)。我查看了输出,看起来还可以。在阅读了您的评论后,我再次重新检查,确实有一个类别没有蛞蝓!!!浪费了这么多时间......随时发布这个答案......

标签: python django django-views template-engine


【解决方案1】:

错误信息中的关键部分是

'{'category_name_slug': ''}' 

这表明您没有正确地将类别传递给模板,或者您的类别没有设置 slug。

您说使用category.id 不会导致错误,这意味着您正确地将类别传递给模板。

因此,您可能有一个没有 slug 集的类别。检查数据库中的值。

【讨论】:

    猜你喜欢
    • 2014-07-17
    • 2014-10-10
    • 2012-09-10
    • 2012-10-10
    • 2012-11-08
    • 2018-12-17
    • 2023-03-28
    • 2013-07-13
    • 1970-01-01
    相关资源
    最近更新 更多