Django Tutorial html css python для цикла не работает

64
7

Я столкнулся с этой ошибкой как в учебнике djangogirls, так и в учебнике django от djangoproject.com. Я действительно пытаюсь изучить django, но я не понимаю, где все идет не так.

Мои html-страницы больше не будут распечатывать циклы for, которые охватывают мои варианты в моем опросе.

Если цикл for должен отображать вывод, данные не отображаются. Цикл for не выполняется.

Вот мои страницы

опросы \details.html

<h1>{{ question.question_text }}</h1>

{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}

<form action="{% url 'polls:vote' question.id %}" method="post">
{% csrf_token %}
{% for choice in question.choice_set.all %}
<input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}" />
<label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br />
{% endfor %}
<input type="submit" value="Vote" />
</form>

опросы \index.html

{% load staticfiles %}

<link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}" />

{% if latest_question_list %}
<ul>
{% for question in latest_question_list %}
<li><a href="{% url 'polls:detail' question.id %}">{{ question.question_text }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>No polls are available.</p>
{% endif %}

опросы \models.py

import datetime

from django.db import models
from django.utils import timezone

class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')

def was_published_recently(self):
now = timezone.now()
# return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
return now - datetime.timedelta(days=1) <= self.pub_date <= now

was_published_recently.admin_order_field = 'pub_date'
was_published_recently.boolean = True
was_published_recently.short_description = 'Published recently?'

def __str__(self):
return self.question_text

class Choice(models.Model):
question = models.ForeignKey(Question) # each choice is related to a single question
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)

def __str__(self):
return self.choice_text

class Answer(models.Model):
question = models.ForeignKey(Question) # each answer is related to a single question
answer = models.ForeignKey(Choice) # each answer is related to the choices above # is this set up correctly?
answer_text = models.CharField(max_length=200)

def __str__(self):
return self.answer_text

опросы \views.py

from django.shortcuts import get_object_or_404, render
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from django.views import generic
from django.utils import timezone

from .models import Choice, Question

class IndexView(generic.ListView):
template_name = 'polls/index.html'
context_object_name = 'latest_question_list'

def get_queryset(self):
"""
Return the last five published questions (not including those set to be
published in the future).
"""
return Question.objects.filter(
pub_date__lte=timezone.now()
).order_by('-pub_date')[:5]

#def get_queryset(self):
# """Return the last five published questions."""
# return Question.objects.order_by('-pub_date')[:5]

class DetailView(generic.DetailView):
model = Question
template_name = 'polls/detail.html'

class ResultsView(generic.DetailView):
model = Question
template_name = 'polls/results.html'

def vote(request, question_id):
p = get_object_or_404(Question, pk=question_id)
try:
selected_choice = p.choice_set.get(pk=request.POST['choice'])
except (KeyError, Choice.DoesNotExist):
# Redisplay the question voting form.
return render(request, 'polls/detail.html', {
'question': p,
'error_message': "You didn't select a choice.",
})
else:
selected_choice.votes += 1
selected_choice.save()
# Always return an HttpResponseRedirect after successfully dealing
# with POST data. This prevents data from being posted twice if a
# user hits the Back button.
return HttpResponseRedirect(reverse('polls:results', args=(p.id,)))

спросил(а) 2021-01-25T18:04:30+03:00 6 месяцев назад
1
Решение
134

Измените выбор на выбор. Иногда это может исправить. Потому что эти данные извлекаются из таблицы в базе данных.

ответил(а) 2021-01-25T18:04:30+03:00 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема