Django模板反向URL解析不起作用

时间:2013-01-19 06:17:35

标签: python django templates url

我的项目中有以下内容:urls.py:

urlpatterns = patterns('',
url(r'^watches/(?P<object_id>\d+)/$', list_detail.object_detail, watch_detail, name='watch_detail'),
 )

但是,模板中的以下行会返回错误:

<li><a href ="{% url 'watch_detail' 1 %}">A link</a></li>

它返回此错误:

  

/ watches /

的NoReverseMatch      

反向&#39;&#39; watch_detail&#39;&#39;参数&#39;(1,)&#39;和关键字参数&#39; {}&#39;没找到。

这让我很困惑,因为如果我运行&#34; manage.py shell&#34;我得到以下结果:

>>> from django.core.urlresolvers import reverse
>>> reverse("watch_detail", args=(1,))
'/watches/1/'
>>>

关于可能出错的任何建议?

谢谢。

1 个答案:

答案 0 :(得分:2)

你在url conf(watch_detail)中获得的第三个参数是什么?查看docs,您的第三个参数应该是字典。

您的conf文件是否应如下所示? -

urlpatterns = patterns('',
    url(r'^watches/(?P<object_id>\d+)/$', 'list_detail.object_detail.watch_detail', name='watch_detail'),
)

(假设您的观点位于list_detail/object_detail/watch_detail)。

为了澄清,您还可以传递视图函数而不是字符串路径,因此您的网址可以写成 -

from your_app.your_module import watch_detail

urlpatterns = patterns('',
    url(r'^watches/(?P<object_id>\d+)/$', watch_detail, name='watch_detail'),
)

第二个参数watch_detail是您的视图函数。

修改

如果watch_detail确实是一个参数,那么你需要将它包含在模板反向函数中 -

{% url 'watch_detail', 1, watch_detail %}