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.shortcuts import get_object_or_404, render
|
||||||
from django.http import HttpResponse
|
from django.urls import reverse
|
||||||
from django.template import loader
|
|
||||||
|
|
||||||
from .models import Question
|
from .models import Choice, Question
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
|
|
||||||
@ -24,4 +25,23 @@ def results(request, question_id):
|
|||||||
|
|
||||||
|
|
||||||
def vote(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