You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跟随Django2.0教程Part4时遇NoReverseMatch错误求助

解决Django 2.0中访问/polls/1/时的NoReverseMatch错误

我帮你分析下这个错误的原因,大概率是URL配置或者模板反向解析的参数出了问题,咱们一步步来排查:

1. 先检查polls应用的URL配置是否完整

从你贴的代码来看,vote的URL路径明显没写完(显示path('<i...')),这会直接导致Django找不到对应的反向解析模式。你需要把vote的URL定义补全:

修改polls/urls.py,确保vote的路径正确:

from django.urls import path
from . import views

app_name = 'polls'
urlpatterns = [
    path('', views.index, name='index'),
    path('<int:question_id>/', views.detail, name='detail'),
    path('<int:question_id>/results/', views.results, name='results'),
    # 补全vote的URL,注意要带<int:question_id>参数,并且name设为'vote'
    path('<int:question_id>/vote/', views.vote, name='vote'),
]

2. 检查模板中的反向解析是否传对了参数

错误提示里提到参数是('',),说明反向解析时没有传入有效的question_id值。你得看看detail.html模板里的表单action部分:

正确的写法应该是这样的:

<form action="{% url 'polls:vote' question.id %}" method="post">
    {% csrf_token %}
    <!-- 你的选项表单内容 -->
</form>

这里要注意两个点:

  • 模板里必须能拿到question对象(也就是视图要把这个变量传给模板)
  • 一定要用question.id作为参数,不能直接写question,也不能写错变量名(比如拼写成queston.id)

3. 确认视图函数正确传递了模板变量

最后检查polls/views.py里的detail视图,确保它把question对象传给了模板:

from django.shortcuts import get_object_or_404, render
from .models import Question

def detail(request, question_id):
    # 用get_object_or_404获取对应的Question对象
    question = get_object_or_404(Question, pk=question_id)
    # 把question变量传给模板
    return render(request, 'polls/detail.html', {'question': question})

如果这里没传question变量,模板里的question.id就会是空值,自然会触发反向解析错误。

修改完这些后,重启Django服务器再访问/polls/1/,应该就能正常解决这个问题啦~

内容的提问来源于stack exchange,提问作者Wizard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:59:17