我的项目中有以下内容: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/'
>>>
关于可能出错的任何建议?
谢谢。
答案 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 %}