From 2fcbc9cffb6a240bf422933daef84522cdfbf43f Mon Sep 17 00:00:00 2001 From: Josh Flatt Date: Sat, 22 Nov 2025 21:07:47 -0600 Subject: [PATCH] changed views to classes --- polls/urls.py | 6 +++--- polls/views.py | 24 ++++++++++++++---------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/polls/urls.py b/polls/urls.py index 21dff7e..45ebddd 100644 --- a/polls/urls.py +++ b/polls/urls.py @@ -4,8 +4,8 @@ from . import views app_name = "polls" urlpatterns = [ - path("", views.index, name="index"), - path("/", views.detail, name="detail"), - path("/results/", views.results, name="results"), + path("", views.IndexView.as_view(), name="index"), + path("/", views.DetailView.as_view(), name="detail"), + path("/results/", views.ResultsView.as_view(), name="results"), path("/vote/", views.vote, name="vote"), ] diff --git a/polls/views.py b/polls/views.py index 4ad7048..5372446 100644 --- a/polls/views.py +++ b/polls/views.py @@ -2,26 +2,30 @@ from django.db.models import F from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import get_object_or_404, render from django.urls import reverse +from django.views import generic from .models import Choice, Question # Create your views here. -def index(request): - latest_question_list = Question.objects.order_by("-pub_date")[:5] - context = {"latest_question_list": latest_question_list} - return render(request, "polls/index.html", context) +class IndexView(generic.ListView): + template_name = "polls/index.html" + context_object_name = "latest_question_list" + + def get_queryset(self): + """Return the last five published questions.""" + return Question.objects.order_by("-pub_date")[:5] -def detail(request, question_id): - question = get_object_or_404(Question, pk=question_id) - return render(request, "polls/detail.html", {"question": question}) +class DetailView(generic.DetailView): + model = Question + template_name = "polls/detail.html" -def results(request, question_id): - question = get_object_or_404(Question, pk=question_id) - return render(request, "polls/results.html", {"question": question}) +class ResultsView(generic.DetailView): + model = Question + template_name = "polls/results.html" def vote(request, question_id):