DjangoのFunction-based View(FBV)の基本を完全解説!超初心者でもわかるビュー入門
生徒
「DjangoでWebページを表示するって聞いたんですが、何から始めればいいのかわかりません……」
先生
「Djangoではまずビューという仕組みを理解すると、Webページの流れがとても分かりやすくなります。」
生徒
「ビューって、画面のデザインのことですか?」
先生
「デザインではなく、URLにアクセスされたときに何をするかを決める場所です。まずは一番基本のFunction-based Viewから見ていきましょう。」
1. Djangoのビューとは何か?
Djangoのビューとは、Webサイトにアクセスがあったときにどんな処理をして、どんな結果を返すかを決める役割を持つ部分です。現実世界で例えると、レストランの「店員さん」のような存在です。お客さん(ブラウザ)が注文(URLアクセス)をすると、店員さん(ビュー)が内容を確認し、料理(HTML)を運んできます。
Djangoでは、このビューを使って「文字を表示する」「HTMLページを表示する」「データを処理する」といったことを行います。初心者の方は、まずビュー=処理担当と覚えておくと安心です。
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で書いた処理の結果を画面に返す仕組み」だと考えると、理解しやすくなります。