From 6697bae1f913b415928b653185ea6438e40f6af7 Mon Sep 17 00:00:00 2001 From: Celestino Rey Date: Thu, 18 Jul 2024 13:27:47 +0200 Subject: [PATCH] Avances hasta parte 4 --- Django/mysite/db.sqlite3 | Bin 143360 -> 143360 bytes .../mysite/polls/templates/polls/detail.html | 18 ++++++---- .../mysite/polls/templates/polls/results.html | 9 +++++ Django/mysite/polls/views.py | 34 +++++++++++++----- 4 files changed, 47 insertions(+), 14 deletions(-) create mode 100644 Django/mysite/polls/templates/polls/results.html diff --git a/Django/mysite/db.sqlite3 b/Django/mysite/db.sqlite3 index 64c823208acfa852363fcfc4e4c85bdff77fb389..e548e4dd900cdb8cf245bc2850a0b23c621e91d0 100644 GIT binary patch delta 40 ucmZp8z|ru4V}dlJ(L@<%Mx(}r)&$0_2~2tNjGWWY%QHzZa&CVCqyzvCqzl*p delta 40 ucmZp8z|ru4V}dlJ!9*EnMuWzL)&$0_2~2tNj2zR?%QHzZa%_JAqyzvC9ShO` diff --git a/Django/mysite/polls/templates/polls/detail.html b/Django/mysite/polls/templates/polls/detail.html index 4e1bd67..55fa300 100644 --- a/Django/mysite/polls/templates/polls/detail.html +++ b/Django/mysite/polls/templates/polls/detail.html @@ -1,6 +1,12 @@ -

{{ question.question_text }}

- \ No newline at end of file +
+ {% csrf_token %} +
+

{{ question.question_text }}

+ {% if error_message %}

{{ error_message }}

{% endif %} + {% for choice in question.choice_set.all %} + +
+ {% endfor %} +
+ +
\ No newline at end of file diff --git a/Django/mysite/polls/templates/polls/results.html b/Django/mysite/polls/templates/polls/results.html new file mode 100644 index 0000000..33b67b2 --- /dev/null +++ b/Django/mysite/polls/templates/polls/results.html @@ -0,0 +1,9 @@ +

{{ question.question_text }}

+ + + +Vote again? \ No newline at end of file diff --git a/Django/mysite/polls/views.py b/Django/mysite/polls/views.py index 4e674eb..5e541a7 100644 --- a/Django/mysite/polls/views.py +++ b/Django/mysite/polls/views.py @@ -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) \ No newline at end of file + 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,))) \ No newline at end of file