Url模板标记引发NoReverseMatch错误,但生成的url是正确的

时间:2015-11-21 16:32:56

标签: python django django-views template-engine

我无法使用{%url%}在Django模板中生成网址。我收到以下错误:

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

这就是我如何使用标签:

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

这是相对url()定义:

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

有趣的是,如果我使用类别。 id 而不是slug它可以工作,但当然生成的网址并不是任何类别,因为&#34; slug&# 34;,视图中不需要id。

如果我将标签用作

,那就更奇怪了
{{1}}

然后生成url是正确的,不会引发任何错误。

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

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

错误消息中的关键部分是

'{'category_name_slug': ''}' 

这暗示您要么没有正确地将类别传递给模板,要么您有一个没有设置slug的类别。

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

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