django - 命名 URL 模式抛出 NoReverseMatch 异常

标签 django django-templates

我正在 Django 1.4 中实现规范书籍/作者/出版商示例。在我看来,显示所有书籍的列表,我已将 url 模板标记插入到引用命名 URL 模式的 anchor 标记中:

{% 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 anchor 。)

我的网址模式是:

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

当我单击 anchor 查看图书的详细信息时,出现以下错误:

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 名称周围的单引号,并且还尝试使用 View 路径“app.views.show_book_details”而不是命名的 urlpattern,但两种更改都无法解决问题。有人可以帮忙吗?

非常感谢。

最佳答案

删除模板中 url 标记中的引号:

{% url book-details book.id %}

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

关于django - 命名 URL 模式抛出 NoReverseMatch 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12830476/

相关文章:

python - 在 Twilio 和 Sendgrid api 中,计划消息的发送时间相差 5 小时 30 分钟

CSS 文件中的 Django 媒体 URL

Django,如何将变量传递给平面页面?

javascript - Angularjs - 未在 Safari 中添加授权 header

python - django、python、postgres 和 web 部署

python-3.x - 在 DRF 中捕获 POST 的唯一约束

python - 检查成员值是否与之前迭代中的不同

Django 模板 : How to access a form field equal to a variable value?

django - 使用 {% url ??? %} 在 Django 模板中

python - Django 重定向