跟随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类,具体步骤:
- 先导入通用视图:
from django.views.generic import DetailView
- 添加
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
相关产品推荐
相关产品推荐

