Skip to content

Commit 186309a

Browse files
committed
django tutorial: end of part 4 - using generic views.
1 parent a093a8b commit 186309a

File tree

2 files changed

+21
-21
lines changed

2 files changed

+21
-21
lines changed

mysite/polls/urls.py

+3-7
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,8 @@
33
from . import views
44

55
urlpatterns = [
6-
# ex: /polls/
7-
url(r'^$', views.index, name='index'),
8-
# ex: /polls/5/
9-
url(r'^(?P<question_id>[0-9]+)/$', views.detail, name='detail'),
10-
# ex: /polls/5/results/
11-
url(r'^(?P<question_id>[0-9]+)/results/$', views.results, name='results'),
12-
# ex: /polls/5/vote/
6+
url(r'^$', views.IndexView.as_view(), name='index'),
7+
url(r'^(?P<pk>[0-9]+)/$', views.DetailView.as_view(), name='detail'),
8+
url(r'^(?P<pk>[0-9]+)/results/$', views.ResultsView.as_view(), name='results'),
139
url(r'^(?P<question_id>[0-9]+)/vote/$', views.vote, name='vote'),
1410
]

mysite/polls/views.py

+18-14
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,28 @@
1-
from django.http import HttpResponse, HttpResponseRedirect
2-
from polls.models import Choice, Question
3-
from django.shortcuts import render, get_object_or_404
1+
from django.shortcuts import get_object_or_404, render
2+
from django.http import HttpResponseRedirect
43
from django.core.urlresolvers import reverse
4+
from django.views import generic
55

6+
from .models import Choice, Question
67

7-
# Create your views here.
8-
def index(request):
9-
latest_question_list = Question.objects.order_by('-pub_date')[:5]
10-
context = {'latest_question_list': latest_question_list}
11-
return render(request, 'polls/index.html', context)
128

9+
class IndexView(generic.ListView):
10+
template_name = 'polls/index.html'
11+
context_object_name = 'latest_question_list'
1312

14-
def detail(request, question_id):
15-
question = get_object_or_404(Question, pk=question_id)
16-
return render(request, 'polls/detail.html', {'question': question})
13+
def get_queryset(self):
14+
"""Return the last five published questions."""
15+
return Question.objects.order_by('-pub_date')[:5]
1716

1817

19-
def results(request, question_id):
20-
question = get_object_or_404(Question, pk=question_id)
21-
return render(request, 'polls/results.html', {'question': question})
18+
class DetailView(generic.DetailView):
19+
model = Question
20+
template_name = 'polls/detail.html'
21+
22+
23+
class ResultsView(generic.DetailView):
24+
model = Question
25+
template_name = 'polls/results.html'
2226

2327

2428
def vote(request, question_id):

0 commit comments

Comments
 (0)