added /vote/ form - same as detail
This commit is contained in:
parent
51c5b522b2
commit
6e3368304a
@ -1,8 +1,9 @@
|
||||
from django.db.models import F
|
||||
from django.http import HttpResponse, HttpResponseRedirect
|
||||
from django.shortcuts import get_object_or_404, render
|
||||
from django.http import HttpResponse
|
||||
from django.template import loader
|
||||
from django.urls import reverse
|
||||
|
||||
from .models import Question
|
||||
from .models import Choice, Question
|
||||
|
||||
# Create your views here.
|
||||
|
||||
@ -24,4 +25,23 @@ def results(request, question_id):
|
||||
|
||||
|
||||
def vote(request, question_id):
|
||||
return HttpResponse("You're voting on question %s." % question_id)
|
||||
question = get_object_or_404(Question, pk=question_id)
|
||||
try:
|
||||
selected_choice = question.choice_set.get(pk=request.POST["choice"]) # type: ignore
|
||||
except (KeyError, Choice.DoesNotExist):
|
||||
# Redisplay the question voting form.
|
||||
return render(
|
||||
request,
|
||||
"polls/detail.html",
|
||||
{
|
||||
"question": question,
|
||||
"error_message": "You didn't select a choice.",
|
||||
},
|
||||
)
|
||||
else:
|
||||
selected_choice.votes = F("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=(question.id,))) # type: ignore
|
||||
|
||||
Loading…
Reference in New Issue
Block a user