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

跟随Django教程第4部分时运行服务器遇AttributeError:module 'polls.views' has no attribute 'ResultsView'

解决Django的AttributeError: module 'polls.views' has no attribute 'ResultsView'问题

嘿,我一眼就发现问题所在啦!咱们一步步来解决:

错误根源

你在polls/urls.py里配置了类视图views.ResultsView.as_view(),但你的polls/views.py里根本没有定义这个类视图——你写的是一个名为results的函数视图,Django自然找不到ResultsView这个属性啦。

下面给你两种解决思路,选哪种都可以:


方案1:沿用现有函数视图,修改urls配置

既然你已经写了results函数视图,那直接调整polls/urls.py里的对应路径就行:
把原来的:

path("<int:pk>/results/", views.ResultsView.as_view(), name="results"),

改成:

path("<int:question_id>/results/", views.results, name="results"),

这样就会调用你写好的函数视图,参数也和函数的question_id匹配上了。


方案2:改成Django通用类视图(符合教程第4部分的预期)

如果教程里是用类视图的方式,那你需要在polls/views.py里添加ResultsView类,具体步骤:

  1. 先导入通用视图:
from django.views.generic import DetailView
  1. 添加ResultsView类:
class ResultsView(DetailView):
    model = Question
    template_name = 'polls/results.html'

这样你的urls.py里的配置就不用改了,类视图会自动处理pk参数,并且把对应的Question对象传到模板里,正好匹配你results.html里的模板变量。


额外的模板小问题

你的polls/results.html里的链接标签写错啦,会导致模板渲染错误:
把:

<a href = '{% polls:detail question.id %}'>Vote again?</a>

改成:

<a href="{% url 'polls:detail' question.id %}">Vote again?</a>

Django的url标签格式是{% url '命名空间:路由名称' 参数 %},别忘了加url关键字和引号哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 21:02:30