DjangoのClass-based View(CBV)の仕組みと強みを初心者向けにやさしく解説
生徒
「Djangoで画面を作るときに、クラスを使う書き方があるって聞いたんですが、正直よくわかりません…」
先生
「Djangoにはビューを作る方法が二つあって、そのうちの一つがClass-based View、略してCBVです。仕組みがわかると、とても便利に使えますよ。」
生徒
「クラスって難しそうですが、パソコン初心者でも理解できますか?」
先生
「大丈夫です。たとえ話を使いながら、基本からゆっくり説明していきましょう。」
1. Djangoのビューとは何をする場所なのか
Djangoのビューとは、ブラウザからのリクエスト、つまり「このページを見せてほしい」というお願いを受け取り、どんな画面を返すかを決める場所です。現実でたとえると、レストランの店員のような存在で、お客さんの注文を聞いて、厨房に伝え、料理を運んできます。
Djangoでは、この店員の役割をPythonで書きます。その書き方に、関数を使う方法と、クラスを使う方法があります。今回は、クラスを使うClass-based Viewについて学びます。
2. Class-based View(CBV)とは何か
Class-based Viewとは、Pythonのクラスという仕組みを使ってビューを書く方法です。クラスとは、共通の動作をまとめた設計図のようなものです。たとえば「画面を表示する」「データを受け取る」といった動きを、あらかじめ用意された形で使えます。
CBVは最初は少し難しく感じますが、慣れると同じ処理を何度も書かなくてよくなり、コードが整理されて読みやすくなります。
3. CBVの基本的な仕組み
CBVでは、ビューをクラスとして定義します。その中で、HTTPメソッドと呼ばれる「GET」や「POST」に対応した処理を書きます。GETはページを表示するとき、POSTはフォームなどでデータを送るときに使われます。
from django.views import View
from django.http import HttpResponse
class HelloView(View):
def get(self, request):
return HttpResponse("こんにちは、DjangoのCBVです")
この例では、HelloViewというクラスを作り、getという関数で画面に文字を表示しています。クラスの中に処理を書く、という点がCBVの基本です。
4. URLとCBVのつながり方
CBVを使うときは、URL設定で少し特別な書き方をします。クラスそのものではなく、as_viewという仕組みを通して使います。これは「このクラスをビューとして使います」という合図です。
from django.urls import path
from .views import HelloView
urlpatterns = [
path("hello/", HelloView.as_view()),
]
URLとクラスが結びつくことで、ブラウザからアクセスしたときに、クラスの中の処理が実行されます。
5. Djangoが用意している便利なCBV
Djangoには、よく使う処理が最初から用意されたCBVがあります。たとえば、画面を表示するだけのTemplateViewがあります。これを使うと、ほとんどコードを書かずにページを作れます。
from django.views.generic import TemplateView
class SampleView(TemplateView):
template_name = "sample.html"
テンプレート名を指定するだけで、HTMLを表示できるのは、CBVの大きな強みです。
6. CBVの強み① 同じ処理を何度も書かなくてよい
CBVの一番の強みは、共通処理をまとめられる点です。たとえば、ログインしているかどうかの確認や、データの取得処理などを、一つのクラスにまとめて使い回せます。
これは、毎回同じ説明をしなくてよいマニュアルのようなもので、作業のミスも減らせます。
7. CBVの強み② 処理の流れが整理しやすい
CBVでは、役割ごとに関数が分かれているため、どこで何をしているのかが見やすくなります。特に、画面表示とデータ処理が混ざりにくくなる点は、初心者にも安心です。
class SimpleView(View):
def get(self, request):
return HttpResponse("表示専用の画面です")
def post(self, request):
return HttpResponse("データを受け取りました")
このように、動作ごとに分けて考えられるのがCBVの特徴です。
8. Function-based Viewとの違いをやさしく理解
Function-based Viewは、一つの関数にすべての処理を書く方法です。小さな処理には向いていますが、機能が増えると複雑になります。CBVは、最初は理解に時間がかかりますが、後から管理しやすくなる設計です。
パソコン初心者の方は、「たくさんの作業を整理整頓するための箱」だと考えると、CBVのイメージがつかみやすくなります。