【发布时间】: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