DjangoのFunction-based View(FBV)の基本を完全解説!超初心者でもわかるビュー入門
生徒
「DjangoでWebページを表示するって聞いたんですが、何から始めればいいのかわかりません……」
先生
「Djangoではまずビューという仕組みを理解すると、Webページの流れがとても分かりやすくなります。」
生徒
「ビューって、画面のデザインのことですか?」
先生
「デザインではなく、URLにアクセスされたときに何をするかを決める場所です。まずは一番基本のFunction-based Viewから見ていきましょう。」
1. Djangoのビューとは何か?
Djangoのビューとは、Webサイトにアクセスがあったときに「どんな処理をして、どんな内容を画面に表示するか」を決める、とても重要な役割を持つ部分です。少し難しく聞こえますが、やっていることはとてもシンプルです。
たとえば、現実世界で考えると、ビューはレストランの「店員さん」にあたります。お客さん(ブラウザ)が「この料理ください!」と注文(URLにアクセス)すると、店員さん(ビュー)が注文内容を確認し、キッチンの状況を見て、料理(HTMLや文字)をテーブルに運びます。
Djangoでは、このビューが「文字を表示する」「HTMLページを表示する」「簡単な計算や処理をして結果を返す」といったことを担当します。初心者の方は、まずビュー=画面に表示する内容を決める処理係とイメージすると、理解しやすくなります。
実際に、ビューがどれくらい簡単なものか、超シンプルな例を見てみましょう。
from django.http import HttpResponse
def sample_view(request):
return HttpResponse("これはDjangoのビューです")
このように、ビューは「アクセスがあったら、この文字を表示する」と決めているだけです。難しい処理はまだ一切していません。まずはビューはWebページの中身を決める場所という感覚をつかめればOKです。
2. Function-based View(FBV)とは?
Function-based View(略してFBV)は、Pythonの関数を使って作るビューのことです。Pythonで関数を書いたことがなくても大丈夫です。関数とは「やることをひとまとめにした箱」のようなものです。
FBVはコードがシンプルで読みやすく、Django初心者やプログラミング未経験者にとって理解しやすいのが特徴です。Djangoのビュー基本を学ぶ最初の一歩として、非常におすすめの方法です。
3. views.pyにFBVを書いてみよう
Djangoでは、ビューはviews.pyというファイルに書きます。このファイル名は「ビュー専用ノート」だと思ってください。まずは、文字をそのまま表示する一番シンプルなFBVを見てみましょう。
from django.http import HttpResponse
def hello_view(request):
return HttpResponse("こんにちは、Django!")
defは「関数を作ります」という合図です。requestは「ブラウザからのお願いが入った箱」で、HttpResponseは「返事として画面に表示する内容」を表します。
4. requestとは何か?初心者向けに解説
requestという言葉は難しく見えますが、意味はとても単純です。これはユーザーが送ってきた情報のまとめです。たとえば「どのURLに来たか」「どのボタンを押したか」といった情報が入っています。
今は中身を深く理解しなくても問題ありません。「ビューには必ずrequestが渡される」というルールだけ覚えておけば十分です。
5. HTMLを返すFunction-based View
次は、実際のWebページらしくHTMLを返してみましょう。FBVでは、HTML文字列をそのまま返すこともできます。
from django.http import HttpResponse
def simple_page(request):
html = "<h1>はじめてのDjango</h1><p>これはFBVの例です。</p>"
return HttpResponse(html)
このように、ビューは「何を表示するか」を自由に決められます。HTMLがそのまま画面に表示されるので、Webページを作っている感覚をつかみやすいです。
6. URLとFunction-based Viewの関係
FBVは単体では動きません。URLとつなげることで、初めてWebページとして表示されます。URLは「住所」、ビューは「中で働く人」と考えると分かりやすいです。
from django.urls import path
from . import views
urlpatterns = [
path("hello/", views.hello_view),
]
これで、/hello/というURLにアクセスすると、先ほど作ったhello_viewが動きます。URLとビューが結びつくことで、DjangoのWebページが完成します。
7. 少し処理を入れたFBVの例
最後に、簡単な処理を入れたFunction-based Viewを見てみましょう。ここでは、数字を使ったとても単純な例にします。
from django.http import HttpResponse
def number_view(request):
number = 5 + 3
return HttpResponse(f"計算結果は {number} です")
このように、FBVの中では普通のPythonと同じように計算や処理ができます。DjangoのFunction-based Viewは「Pythonで書いた処理の結果を画面に返す仕組み」だと考えると、理解しやすくなります。