|
|
|
@ -1,10 +1,10 @@ |
|
|
|
from django.shortcuts import get_object_or_404, render |
|
|
|
from django.http import HttpResponse, Http404 |
|
|
|
from django.template import loader |
|
|
|
from django.http import HttpResponse, HttpResponseRedirect |
|
|
|
from django.urls import reverse |
|
|
|
from django.db.models import F |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from .models import Question |
|
|
|
from .models import Choice, Question |
|
|
|
|
|
|
|
# Create your views here. |
|
|
|
|
|
|
|
@ -18,9 +18,27 @@ def detail(request, question_id): |
|
|
|
return render(request, "polls/detail.html", {"question": question}) |
|
|
|
|
|
|
|
def results(request, question_id): |
|
|
|
response = "You're looking at the results of question %s." |
|
|
|
return HttpResponse(response % question_id) |
|
|
|
|
|
|
|
question = get_object_or_404(Question, pk=question_id) |
|
|
|
return render(request, "polls/results.html", {"question": question}) |
|
|
|
|
|
|
|
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"]) |
|
|
|
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,))) |