Данные/контент не отображаются. Может ли кто-нибудь сообщить мне о необходимых изменениях для отображения данных?

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 в вашей базе данных не пуста и что проблема действительно возникает отсюда? Проверьте это, используя python manage.py shell и запустив Question.objects.all() в оболочке (или используйте визуализатор базы данных, например DBeaver),
  • .
  • Попробуйте визуализировать {{ question_list }} под строкой {% block content %}, вне цикла for в вашем HTML файле: отображает ли он что-нибудь?
  • Избегайте использования ключевого слова data для итерации question_list, интересно, не могло ли это имя переменной уже использоваться в context вашей страницы, поскольку это очень общее ключевое слово. Выберите что-нибудь более явное, например "вопрос", это будет понятнее и снизит риск конфликта:
{% for question in question_list %} 
     ...
Вернуться на верх