2

私はDjango1.4で正規の本/著者/出版社の例を実装しています。すべての本のリストを表示する私のビューでは、名前付きURLパターンを参照するアンカータグにURLテンプレートタグを挿入しました。

{% for book in book_list %}
    {# <a href="/book/{{ book.id }}/">{{ book.title }}</a> #}
    <a href="{% url 'book-details' book.id %}">{{ book.title }}</a>
{% endfor %}

(機能するハードコードされたURLアンカーをコメントアウトしたことに注意してください

私のurlpatternsは次のとおりです。

url(r'^book/$', 'app.views.show_all_books', name="all-books"),
url(r'^book/(\d+)/$', 'app.views.show_book_details', name="book-details"),

アンカーをクリックして本の詳細を表示すると、次のエラーが発生します。

NoReverseMatch at /book/
Reverse for "book-details" with arguments '(1,)' and keyword arguments '{}' not found.  

このエラーが発生した他の人に関する他の投稿や、URLテンプレートタグと名前付けURLパターンに関するDjangoのドキュメントを読んだことがありますが、何が間違っているのかわかりません。それが役立つ場合は、「show_book_details」関数の署名を次に示します。

def show_book_details(request, id):

エラーメッセージが何を言っているのか完全には理解していないと思います。urlpattern名を囲む一重引用符を削除し、名前付きurlpatternの代わりにビューパス'app.views.show_book_details'を使用してみましたが、どちらの変更でも問題は解決しません。誰かが助けることができますか?

どうもありがとう。

4

1 に答える 1

2

テンプレートの url タグから引用符を削除します。

{% url book-details book.id %}

https://docs.djangoproject.com/en/1.4/ref/templates/builtins/?from=olddocs#url

于 2012-10-11T02:05:02.983 に答える