Я новичок в Django, и у меня проблема с проверкой CSRF. До сих пор я создавал Django POST-формы, которые успешно работают и не имеют ошибок CSRF. Но когда я пытаюсь создать следующую форму, я получаю сообщение об ошибке проверки CSRF: «Токен CSRF отсутствует или неверен».
{% for a in answers %}
{% csrf_token %}
<form class="" action="." method="post">
<input type="submit" value="{{ a.answer }}" name={{a.answer_id}}></input>
</form>
<p>Number of votes: {{ a.votes }}</p>
{% empty %}
<p>There are no answers for the poll</p>
{% endfor %}
Вот как выглядят модели:
class Question(models.Model):
date_added = models.DateTimeField(auto_now_add=True)
question = models.CharField(max_length=200)
number_of_answers = models.IntegerField(default=0)
class Answer(models.Model):
question = models.ForeignKey(Question)
answer = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
Вот как выглядит функция просмотра для этой формы (пока я не добавлял никакого кода для обработки почтового запроса):
def poll(request, question_id):
if request.method == "POST":
pass
poll = Question.objects.get(id=question_id)
answers = poll.answer_set.order_by()
context = {'poll' : poll, 'answers' : answers}
return render(request, 'polls/poll.html', context)
По сути, на каждый вопрос есть несколько ответов. Я хочу разрешить пользователю нажимать кнопку, связанную с конкретным ответом. Как только пользователь нажимает кнопку, я хочу увеличить количество голосов за этот ответ в базе данных (я еще не добавил код для этого, но это цель). Затем я хочу, чтобы страница перезагрузилась с добавленным голосованием.
Кто-нибудь знает, что я делаю неправильно или чего мне не хватает?
Благодарю вас!