3

我的项目的 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

未找到带有参数 '(1,)' 和关键字参数 '{}' 的 ''watch_detail'' 的反向操作。

这让我很困惑,因为如果我运行“manage.py shell”,我会得到以下结果:

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

关于可能出现什么问题的任何建议?

谢谢你。

4

1 回答 1

2

您的 url conf ( watch_detail) 中的第三个参数是什么?查看文档,您的第三个参数应该是字典。

您的 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)。

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

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 %}
于 2013-01-19T07:53:39.593 回答