diff --git a/apps/polls/urls.py b/apps/polls/urls.py index 8e7e15e..45ebddd 100644 --- a/apps/polls/urls.py +++ b/apps/polls/urls.py @@ -4,12 +4,8 @@ from . import views app_name = "polls" urlpatterns = [ - # ex: /polls/ - path("", views.index, name="index"), - # ex: /polls/5/ - path("specifics//", views.detail, name="detail"), - # ex: /polls/5/results/ - path("/results/", views.results, name="results"), - # ex: /polls/5/vote/ + 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/apps/polls/views.py b/apps/polls/views.py index b2eba60..b2bd1c7 100644 --- a/apps/polls/views.py +++ b/apps/polls/views.py @@ -1,25 +1,29 @@ from django.db.models import F -from django.http import HttpResponse, HttpResponseRedirect +from django.http import 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 -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):