CBVとは
Class-based Viewのことで、Viewに関するクラスがDjangoにはあり、それを継承して書いていくやり方です。
一覧を表示するためのListView、詳細画面のDetailViewなどWebアプリケーションでよく使うパターンが、クラスとして提供されています。
CBVのメリット
CBVを利用することでショートカットでき、必要な実装に集中できます。
特にListViewなどはページネーションがビルドインされているため、対象なるQuerySetを入れるだけでページネーションが動作します。
なぜCBVを使わないのか
ListViewやDetailViewなどのCBVの種類や、それぞれが提供している機能が覚えられないからです。
Djangoに入門したてのころは「CBVでやらなくては!」という脅迫観念があり
などを勉強していましたが、今は後述のFBVをメインに書いています。
何を使っているのか
関数を定義して、それをurls.pyに定義しています。いわゆる Functional-Based View (FBV)です
# views.py def home(request): return render("home.index", context={}) # urls.py from django.urls import path from .views import home urlpatterns = [ path("/", home) ]
FBVのデメリット
記述がCBVに比べて、冗長になりがちです。
FBVを書くきっかけ
というサイトのがきっかけでした。
あわせてhtmx のようなHTMLの一部分だけを返すライブラリをDjangoと併用することが多くなり、FBVなら自由書けることも理由の一つです。
「DjangoはCBVを使いこなせないと…」となっている方がいらしたら、そんなこともないよ。と伝えられるといいなと思って書きました。