2

我正在 Django 1.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 名称周围的单引号,并且我还尝试使用视图路径 'app.views.show_book_details' 而不是命名的 urlpattern,但是这两种更改都没有解决问题。有人可以帮忙吗?

非常感谢。

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 回答