Django教程第3部分求助:投票问题无法在浏览器正常显示
排查Django投票页面不显示问题的解决方案
嘿,我看到你跟着Django教程实操时遇到了页面只显示“No polls are available.”的问题,明明严格按步骤来却没出预期效果,咱们来一步步揪出问题所在~
最可能的核心错误:Context变量名格式错误
先看你贴的视图代码,这里有个很容易忽略的细节:
context = { 'latest question list': latest_question_list, }
你给context字典的键加了空格,但Django模板里的变量名是不允许包含空格的!教程里的正确键名应该是和前面变量名一致的latest_question_list(下划线连接)。
模板里肯定是用{{ latest_question_list }}来调用数据的,键名不匹配的话,模板根本拿不到你从数据库查出来的问题列表,自然会触发“无投票”的分支提示。
先把这行代码改成下面这样:
context = { 'latest_question_list': latest_question_list, }
其他需要排查的点
如果改完变量名还是不行,再检查下面两个环节:
确认数据库有测试数据
即使代码逻辑正确,数据库里没有Question对象的话,页面还是会显示无投票。你可以通过Django Shell快速验证:- 运行命令:
python manage.py shell - 依次输入:
from polls.models import Question # 查看所有Question数据 Question.objects.all()
如果返回空列表,就手动创建几个测试数据:
from django.utils import timezone Question.objects.create(question_text="我的第一个投票问题", pub_date=timezone.now())- 运行命令:
检查模板的遍历逻辑
虽然你没贴模板代码,但对照教程确认一下:模板里应该有类似这样的判断和遍历代码,确保变量名和context里的键完全一致:{% if latest_question_list %} <ul> {% for question in latest_question_list %} <li><a href="/polls/{{ question.id }}/">{{ question.question_text }}</a></li> {% endfor %} </ul> {% else %} <p>No polls are available.</p> {% endif %}
先优先修正变量名的问题,这大概率就是解决你当前问题的关键~
内容的提问来源于stack exchange,提问作者hSaim
相关产品推荐
相关产品推荐

