Djangoでpjaxするdjango-pjaxをTemplateViewで試してみた

以前django-pjaxを触ってみたエントリを書いたんですが

Djangoでpjaxするdjango-pjaxを試してみた
http://d.hatena.ne.jp/yuheiomori0718/20120831/1346420984

そのとき、こんなviewを書いてました

from django.template.response import TemplateResponse
from djpjax import pjax

@pjax()
def index(request):
    return TemplateResponse(request, 'app/index.html', {})


@pjax()
def about(request):
    return TemplateResponse(request, 'app/about.html', {})


@pjax()
def contact(request):
    return TemplateResponse(request, 'app/contact.html', {})


静的なhtmlを返しているだけですので、TemplateViewが使えますね


これで同じ動きになります。pjaxデコレータのかまし方がポイントですね

urls.py

#    url(r'^$', 'app.views.index'),
#    url(r'^about$', 'app.views.about'),
#    url(r'^contact$', 'app.views.contact'),

url(r'^$', pjax()(TemplateView.as_view(template_name='app/index.html'))),
url(r'^about$', pjax()(TemplateView.as_view(template_name='app/about.html'))),
url(r'^contact$', pjax()(TemplateView.as_view(template_name='app/contact.html')))

Class-Based Viewとか汎用viewは、こんな感じでコードの記述量が減らせるので、ちゃんと使えるようになろうと思います。