data/content 未显示。任何人都可以让我知道任何必要的更改以呈现数据吗?

The data/content isn't getting displayed. Can anyone please let me know any necessary changes to render the data?

Models.py

class Question(models.Model):
    # id = models.AutoField(primary_key=True)
    question=models.CharField(max_length=600)
    option1=models.CharField(max_length=200, default=None)
    option2=models.CharField(max_length=200, default=None)
    option3=models.CharField(max_length=200, default=None)
    option4=models.CharField(max_length=200, default=None)

views.py

def Practice_all(request):
    practice = Question.objects.all()
    context={ 'question_list': practice }
    return render(request, 'practice.html', context)

urls.py

from django.urls import path
from . import views

urlpatterns = [
    path("", views.index, name="index"),
    
    path("practice/", views.Practice_all, name="practice"),
    
]

practice.html

{% extends 'base.html' %}
{% block content %} 
  {% for data in question_list %} 
    <li> {{ data.option1 }} </li>
    <li> {{ data.option2 }} </li>
    <li> {{ data.option3 }} </li>
  {% endfor %} 
{% endblock %}

这些是我正在使用的 Django 文件,服务器运行完美但不会显示任何内容,甚至没有任何错误,只是空白。有什么建议吗?

一些调试技巧:

  • 您确定您的数据库中的Question table 不为空并且问题真的出在这里吗?检查是否使用 python manage.py shell 和 运行 Question.objects.all() 在 shell 中(或使用像 DBeaver 这样的数据库可视化工具),
  • 尝试在 HTML 文件的 for 循环之外的行 {% block content %} 下可视化 {{ question_list }}:它显示任何内容吗?
  • 避免使用关键字 data 来迭代 question_list,我想知道这个变量名称是否不能在您的页面的 context 中使用,因为它是一个非常通用的关键字。选择更明确的东西,比如“问题”,它会更清楚并减少冲突的风险:
{% for question in question_list %} 
     ...