教程第 3 部分的 Django NoReverseMatch 错误

Posted

技术标签:

【中文标题】教程第 3 部分的 Django NoReverseMatch 错误【英文标题】:Django NoReverseMatch error for Tutorial Part 3 【发布时间】:2018-11-02 18:38:50 【问题描述】:

您好,我一直试图弄清楚为什么我的程序中不断出现 NoReverseMatch 错误,但似乎无法弄清楚原因。我仔细检查了我的 question.id 是否正确并检查了 urls.py 以确保没有任何问题,但是当我添加 % url % 时我不断收到错误消息。我也浏览了几乎所有其他 *** 帖子,但仍然无法找出问题所在。

非常感谢任何帮助!

索引.html

    % if latest_question_list %
    <ul>
       % for question in latest_question_list %
        <li><a href="% url 'polls:detail' question_id %"> 
        question.question_text </a></li>
        % endfor %
        </ul>
    % else %
        <p>No polls are available.</p>
    % endif %

投票/urls.py

    from django.conf.urls import url
    from . import views

    app_name = 'polls'

    urlpatterns = [
         url('', views.index, name='index'),
         url('<int:question_id>', views.detail, name='detail'),
         url('<int:question_id>/results/', views.results, name='results'),
         url('<int:question_id>/vote/', views.vote, name='vote'),
         url('specifics/<int:question_id>/', views.detail, name='detail'),

]

【问题讨论】:

请发布完整的错误信息。 imgur.com/eW0mcWK 您可能应该在% url ... % 标签中将question_id 替换为question.id 不,这并没有解决我之前实际上有 question.id 并且只是更改它以查看它是否有所作为。 嗯,错误表明question_id不存在,或者是一个空字符串。 【参考方案1】:

不应该是question.question_id之类的吗? 在您的锚标记中

【讨论】:

你的意思是像 'polls:detail' question.question_id 因为我很确定 id 是问题的一个属性。 @AdvaitKulkarni:是的,但你写的是question_id(带下划线),而不是点。 @WillemVanOnsem 那么是 question_question.id 还是 question.question_id? 两者都不是。这取决于您尝试访问并传递给 url 方法的属性。如果您使用的是id 属性,那么它将是question.id。如果您使用question_id 属性,question.question_id【参考方案2】:

我解决了这个问题。问题是 virtualenv 是在 Python 2.7 中设置的,而我正在编写专为 Python 3.6 设计的教程。一旦我更新了环境的 python 版本并复制了所有文件,它就可以正常工作了。

【讨论】:

以上是关于教程第 3 部分的 Django NoReverseMatch 错误的主要内容,如果未能解决你的问题,请参考以下文章

Django 教程第 3 部分:创建视图和模板时出错

教程第 3 部分的 Django NoReverseMatch 错误

编写你的第一个 Django 应用程序,第4部分

Django 教程:模板和视图

Django 教程第 2 部分 - 注册后应用程序未显示在管理员上

Django 教程第 2 部分模板——base_site.html 更改未反映