Я на самом деле программирую веб-сайт «Задай вопрос» для школьного проекта.Я следовал за первым этапом учебника по django с официального сайта, но сейчас я пытаюсь улучшить его сам.
Я добавил кнопку «голосовать» в каждый div (которые создаются в цикле for), которыйя хочу увеличить число просмотров views.vote.
Некоторый код будет более понятным.
Итак, вот мой файл detail.html, который показывает все мои вопросы и варианты / ответы на этот вопрос скнопка голосования для каждого выбора:
{% block content %}
<h2>{{ question.question_text }}</h2>
{% 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 %}
<div class="choices">
<label for="">{{ choice.choice_text }}</label><br>
<p>{{ choice.votes }} vote{{ choice.votes|pluralize }}</p>
<input type="submit" name="vote" id="" value="Vote">
</div>
{% endfor %}
<br>
</form>
<a href="{% url 'polls:choice' question.id %}">Add a choice</a>
{% endblock %}
А вот мое мнение. Голосование, которое дает правильный вопрос и (должно) получить правильное значение «голоса» для увеличения:
def vote(request, question_id):
question = get_object_or_404(Question, pk=question_id)
try:
selected_choice = question.choice_set.get(pk=request.POST['vote'])
except (KeyError, Choice.DoesNotExist):
return render(request, 'polls/detail.html', {
'question': question,
'error_message': "You didn't select a choice.",
})
else:
selected_choice.votes += 1
selected_choice.save()
return HttpResponseRedirect(reverse('polls:detail', args=(question.id,)))
Мое значение «Голоса» объявлено в моем объекте «Выбор», как это:
class Choice(models.Model):
votes = models.IntegerField(default=0)
На самом деле, когда я нажимаю кнопку «Голосовать», я получаю это сообщение об ошибке:
invalid literal for int() with base 10: 'Vote'
Я настоящий новичок в Джанго, так что будьте добры!