カテゴリ: Django 更新日: 2026/02/13

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

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

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

生徒

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

先生

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

生徒

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

先生

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

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

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

Djangoのビューとは、「ブラウザからのお願い(リクエスト)」を受け取って、「どの画面を表示するか」「どんな内容を返すか」を決める場所です。Webサイトの裏側で働く、いわば“受付係”のような存在だと考えるとイメージしやすいです。

たとえば、スマートフォンでボタンをタップした瞬間に新しい画面が表示されますよね。そのときDjangoでは、まずビューが呼び出され、「このURLが来たから、この画面を返そう」と判断しています。この判断を担当しているのがビューです。

専門用語でいうと、「リクエスト」はユーザーからのお願い、「レスポンス」はDjangoからの返事です。ビューは、このお願いを受け取り、正しい返事を返す仲介役として動いています。

ここで、いちばんシンプルなビューの例を見てみましょう。まだ意味が完全にわからなくても大丈夫です。「お願いが来たら、文字を返している」という雰囲気をつかめればOKです。


from django.http import HttpResponse

def sample_view(request):
    return HttpResponse("これはDjangoのビューです")

このサンプルでは、ブラウザからアクセスがあると、「これは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
Python
Pythonの文字列から一部を抽出する方法!スライスを使った基本的な切り出し方
New2
Flask
Flaskアプリのセキュリティ対策まとめ!初心者向けに基本をやさしく解説
New3
Flask
FlaskでCookieを安全に使う方法!HttpOnly・Secureフラグの使い方を徹底解説
New4
Flask
Flaskで外部APIと連携する方法!requestsライブラリの使い方を初心者向けに解説
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.2
Java&Spring記事人気No2
Python
Pythonでトランザクション処理を実装する方法を完全解説!commit・rollbackで安全なSQL操作
No.3
Java&Spring記事人気No3
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.4
Java&Spring記事人気No4
Flask
Flaskとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.5
Java&Spring記事人気No5
Flask
Flask‑RESTfulでREST APIを構築する手順まとめ!初心者向けにやさしく解説
No.6
Java&Spring記事人気No6
Python
Pythonの文字列から一部を抽出する方法!スライスを使った基本的な切り出し方
No.7
Java&Spring記事人気No7
Flask
FlaskのSQLAlchemyでフィルタリング検索!filter, filter_byの使い方完全ガイド
No.8
Java&Spring記事人気No8
Flask
Flaskで開発中にデータベースを初期化する方法!初心者でもわかる便利なTips