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

watch_detailurl conf( )にある3番目のパラメーターは何ですか?ドキュメントを見ると、3番目のパラメータは辞書である必要があります。

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

明確にするために、文字列パスの代わりにview関数を渡すこともできるので、urlconfは次のように書くことができます-

from your_app.your_module import watch_detail

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

ここで、2番目のパラメーターwatch_detailはビュー関数です。

編集

watch_detailが実際にパラメーターである場合は、テンプレートの逆関数に含める必要があります-

{% url 'watch_detail', 1, watch_detail %}
于 2013-01-19T07:53:39.593 に答える