Django 関数ベースビューからクラスベースビューへの変更

今時Djangoのビューはクラスを使って定義するのが主流で、自作サイトも関数ベースからクラスベースに変更したのでその違いがわかるように併記しておこうと思います。

以下イタリック箇所は個々人で異なります。

関数ベースビューのコード

views.py
from django.template.response import TemplateResponse
from . import models

def home(request):
    context = {'articles': models.Articles.objects.all()[:5]}
    return TemplateResponse(request, 'home.html', context=context)
urls.py
from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.home, name='home'),
]

クラスベースビューのコード

views.py
from django.views.generic import TemplateView  #テンプレートビュー以外にも様々な汎用ビューがある。
from . import models

class Home(TemplateView):
    template_name = "home.html"   #テンプレート名を指定している。TemplateViewでは必須。

    def get_context_data(self, **kwargs):  #基本的には親メソッドをオーバーライドして独自処理を追加する。
        context = super(Home, self).get_context_data(**kwargs)
        context['articles'] = models.Articles.objects.all()[:5]
        return context
urls.py
from django.conf.urls import url
from app_ttb.views import Home

urlpatterns = [
    url(r'^$', Home.as_view(), name='home'),   #as_view()でビューと紐づける。
]