カテゴリ: Django 更新日: 2026/01/21

DjangoのFBVとCBVを徹底比較!初心者でもわかるビューの基本と選び方

DjangoでFBVとCBVを比較(どちらを使うべき?)
DjangoでFBVとCBVを比較(どちらを使うべき?)

先生と生徒の会話形式で理解しよう

生徒

「DjangoでWebアプリを作るときに、FBVとかCBVって言葉を見たんですが、違いがまったくわかりません…」

先生

「Djangoでは、画面の動きを決める“ビュー”の書き方が2種類あります。それがFBVとCBVです。」

生徒

「パソコンもほとんど触ったことがないんですが、大丈夫でしょうか?」

先生

「大丈夫です。料理のレシピのように、順番に見ていけば必ず理解できます。一つずつ見ていきましょう。」

1. Djangoのビューとは何かを超やさしく解説

1. Djangoのビューとは何かを超やさしく解説
1. Djangoのビューとは何かを超やさしく解説

Djangoのビューとは、ブラウザからのリクエストに対して、どの画面を表示するか、どんなデータを返すかを決める場所です。スマートフォンでボタンを押したときに、次の画面が表示されますが、その裏側で「次はこの画面を出そう」と判断している役割がビューです。

専門用語で「リクエスト」とはお願い、「レスポンス」とは返事のことです。ビューは、このお願いと返事の仲介役をしています。

2. FBVとは?関数で書くシンプルなビュー

2. FBVとは?関数で書くシンプルなビュー
2. FBVとは?関数で書くシンプルなビュー

FBVは「Function Based View」の略で、日本語では「関数ベースビュー」と呼ばれます。関数とは、決められた処理をひとまとめにした箱のようなものです。

初心者にとってFBVはとても分かりやすく、上から下に処理を読むだけで何をしているか理解できます。


from django.http import HttpResponse

def hello_view(request):
    return HttpResponse("こんにちは、Django!")

この例では、ブラウザでページを開くと「こんにちは、Django!」という文字が表示されます。難しい仕組みはなく、お願いが来たら文字を返す、という単純な流れです。

3. CBVとは?クラスで整理されたビュー

3. CBVとは?クラスで整理されたビュー
3. CBVとは?クラスで整理されたビュー

CBVは「Class Based View」の略で、「クラスベースビュー」と呼ばれます。クラスとは、設計図のようなもので、同じ種類の処理をまとめて管理できます。

最初は少し難しく見えますが、機能が増えても整理しやすいのが特徴です。


from django.http import HttpResponse
from django.views import View

class HelloView(View):
    def get(self, request):
        return HttpResponse("こんにちは、CBV!")

FBVと同じ表示ですが、クラスという箱の中に処理を書いています。getは「画面を表示するときの処理」という意味です。

4. FBVとCBVの考え方の違いを例えで理解

4. FBVとCBVの考え方の違いを例えで理解
4. FBVとCBVの考え方の違いを例えで理解

FBVは、紙にその日のやることを一行ずつ書くメモのようなものです。短い内容なら、とても分かりやすいです。

一方CBVは、ノートを章ごとに分けて整理する方法です。最初は準備が大変ですが、後から追加するときに迷いません。

小さなWebページならFBV、大きなWebアプリならCBVが向いていることが多いです。

5. URLとビューのつながりを見てみよう

5. URLとビューのつながりを見てみよう
5. URLとビューのつながりを見てみよう

Djangoでは、URLとビューを結びつけて使います。これをURLルーティングと呼びます。


from django.urls import path
from . import views

urlpatterns = [
    path("hello/", views.hello_view),
]

この設定により、helloというURLにアクセスすると、先ほどのFBVが実行されます。住所と行き先を結びつける地図のような役割です。

6. CBVをURLに設定する方法

6. CBVをURLに設定する方法
6. CBVをURLに設定する方法

CBVの場合は、少し書き方が変わりますが、考え方は同じです。


from django.urls import path
from .views import HelloView

urlpatterns = [
    path("hello/", HelloView.as_view()),
]

as_viewは「クラスをビューとして使える形にするための準備」と考えると理解しやすいです。

7. 初心者はどちらを使うべきか?

7. 初心者はどちらを使うべきか?
7. 初心者はどちらを使うべきか?

プログラミング未経験であれば、最初はFBVから始めるのがおすすめです。理由は、処理の流れがそのまま読めるからです。

慣れてきて、画面が増えたり、同じような処理が多くなってきたら、CBVの便利さが実感できます。

Djangoでは、FBVとCBVを混ぜて使うこともできるため、無理にどちらか一方に決める必要はありません。

8. FBVとCBVを比較して理解を深めよう

8. FBVとCBVを比較して理解を深めよう
8. FBVとCBVを比較して理解を深めよう

FBVはシンプルで理解しやすく、学習初期に最適です。CBVは少し難しいですが、整理された書き方ができ、実務でよく使われます。

Djangoのビュー基本として、この2つの違いを知っておくことで、Webアプリ開発の全体像が見えてきます。

まずは「画面を表示する役割がビュー」という点をしっかり押さえておくことが大切です。

カテゴリの一覧へ
新着記事
New1
Flask
Flaskのログレベル(DEBUG/INFO/WARNING/ERROR)を使い分ける方法を完全ガイド!
New2
Python
Pythonのfrozensetとは?ミュータブルなsetとの違いをわかりやすく解説
New3
Python
Pythonでセットを活用してデータをフィルタリングする方法!初心者でもわかるセットの基本と使い方
New4
Python
Pythonの辞書操作まとめ!初心者が知っておくべき便利ワザ集
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonの文字列から一部を抽出する方法!スライスを使った基本的な切り出し方
No.2
Java&Spring記事人気No2
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.3
Java&Spring記事人気No3
Flask
FlaskアプリのSECRET_KEYの設定方法を完全ガイド!初心者でもわかるセキュリティ対策
No.4
Java&Spring記事人気No4
Flask
Flaskで非同期処理を成功させるベストプラクティス集|初心者でも失敗しない考え方
No.5
Java&Spring記事人気No5
Django
Djangoモデル入門|初心者が最初に知るべきORMの基本操作
No.6
Java&Spring記事人気No6
Flask
Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説
No.7
Java&Spring記事人気No7
Python
Pythonのリストを分割する方法を完全ガイド!初心者でもわかるスライス・split・itertoolsの使い方
No.8
Java&Spring記事人気No8
Flask
Flaskのログをファイルに保存する方法!初心者でもわかる設定手順を徹底解説