Django入门教程第4部分访问polls/1/及根路径报404错误如何解决
根路径404问题解决
你当前项目根URL配置仅注册了polls/和admin/两个路径前缀,空路径没有匹配规则,属于正常现象:
- 直接访问
http://127.0.0.1:8000/polls/即可进入投票应用首页 - 如需根路径自动跳转到投票应用,可在项目根urls.py中添加重定向规则即可
/polls/1/ 404问题解决
该报错由get_object_or_404方法抛出,说明你的数据库中不存在主键为1的Question记录,按以下步骤修复:
- 确认已完成数据库迁移,执行命令:
python manage.py makemigrations python manage.py migrate
- 创建测试问题数据:
你可以通过admin后台创建,也可以执行python manage.py shell进入交互环境执行以下代码:
from polls.models import Question, Choice from django.utils import timezone # 创建测试问题 q = Question(question_text="测试问题:你最喜欢的编程语言是?", pub_date=timezone.now()) q.save() # 为问题添加三个选项 q.choice_set.create(choice_text="Python", votes=0) q.choice_set.create(choice_text="Java", votes=0) q.choice_set.create(choice_text="Go", votes=0) # 输出问题主键ID print("创建的问题ID为:", q.id)
- 访问
http://127.0.0.1:8000/polls/[上一步输出的ID]/即可正常打开页面
模板语法错误提前修复
你所有模板文件的Django标签语法都存在错误,Django模板标签需要用{%和%}包裹,你当前只写了{和},后续会触发模板渲染错误,需要全局修正:
所有模板中的标签按如下规则替换:
{ url ... }→{% url ... %}{ csrf_token }→{% csrf_token %}{ if ... }→{% if ... %}、{ endif }→{% endif %}{ for ... }→{% for ... %}、{ endfor }→{% endfor %}
三个模板中的所有对应标签都要修改,否则页面访问会报错。
内容的提问来源于stack exchange,提问作者Mampenda
相关产品推荐
相关产品推荐

