Django Viewsの基礎:ウェブアプリケーションのコアを理解する
こんにちは、Djangoユーザーの皆さん!今日は ジャンゴ 今回はViewsの基礎について説明します。 Djangoを始めた方なら、Viewsの重要性はご存知ですよね?
Viewsはユーザーのリクエストを処理して応答を返すDjangoの頭脳と言えます。 難しく聞こえますか? 心配しないでください、この記事で簡単かつ楽しく学びましょう。 さあ、始めましょうか?
Django Viewsとは?
Django Viewsは Webアプリケーションのロジックを処理する部分ユーザーがURLからリクエストを送ると、そのリクエストを受け取って処理し、適切なレスポンスを返す役割を果たします。 簡単に言えば、ViewsはWebページの内容を決定する関数と言えます。

Django Viewsの基礎 - 関数型Viewsの作成
最も基本的な形のViewは関数です。 一度作ってみましょう。
django.http from django.http import HttpResponse
def hello_world(request):
return HttpResponse("こんにちは、Djangoの世界!")このシンプルな関数がViewです。 リクエスト オブジェクトを受け取って HttpResponseを返しています。
コード解説
1.
django.http from django.http import HttpResponse
- 意味Djangoの
django.httpモジュールでHttpResponseクラスを取得します。- 説明:
HttpResponseはDjangoでHTTPレスポンスを生成するために使うクラスです。 このクラスを使うと、クライアント(ウェブブラウザなど)にテキスト、HTML、JSONなどを返すことができます。2.
def hello_world(request):
- 意味:
hello_worldという名前のビュー関数を定義します。- 説明: Djangoでview関数はHTTPリクエストを受け取ってHTTP応答を返す関数です。 この関数は
リクエストオブジェクトをパラメータとして受け取ります。リクエストオブジェクトには、クライアントから送信されたHTTPリクエスト情報(ヘッダー、クッキー、GET/POSTデータなど)が含まれています。3.
return HttpResponse("Hello, Django world!")
- 意味:
HttpResponseオブジェクトを生成して返します。- 説明: この行は「こんにちは、Djangoの世界!」という文字列を含むHTTP応答を返します。この文字列はクライアント(例えばウェブブラウザ)に送信され、画面に表示されます。

Django Viewsの基礎 - URLとViewを連結する方法
Viewを作成したら、今度はURLと接続する必要があります。 urls.py ファイルに次のように書いてみてください。
from django.urls import path
from . import views
urlpatterns = [.
path('hello/', views.hello_world, name='hello')、
]さあ /hello/ URLでアクセスすると、私たちが作ったViewが動作するはずです。
コード解説
1.
from django.urls import path
- 意味Djangoの
django.urlsモジュールでパス関数を取得します。- 説明:
パス関数はURLパターンを定義するために使います。この関数は二つの必須引数(URLパターンとビュー関数)とオプションの引数(名前)を受け取ります。2.
.importビューから
- 意味: 現在のディレクトリ(または現在のアプリ)の
views.pyファイルからすべての内容を取得します。- 説明:
views.pyファイルにはビュー関数(例:hello_world)が定義されています。このファイルをインポートしてURLとビュー関数を連結することができます。3.
urlpatterns = [ ... ]。
- 意味: URLパターンを定義するリストです。
- 説明: Djangoは
urlpatternsというリストを使ってURLとビュー関数をマッピングします。このリストに定義された順番でURLを検索し、一致するURLパターンがあれば、そのビュー関数を実行します。4.
path('hello/', views.hello_world, name='hello')
- 意味:
/hello/URLパターンをviews.hello_worldビュー関数と接続します。- 説明:
'hello/': URLパターンを表します。この場合、/hello/で接続するとこのビュー関数が実行されます。views.hello_world: このURLパターンにマップされるビュー関数を指定します。views.pyファイルに定義されたhello_world関数を呼び出します。name='こんにちは': このURLパターンに名前を付けます。この名前はテンプレートやビューでURLを動的に生成する時に使います。例えば、{% url 'hello' %}のようにテンプレートで使用できます。全体的な動作
- ユーザーがウェブブラウザで
/hello/URLでアクセスします。- Djangoは
urlpatternsリストを巡回しながら/hello/パターンを探します。- 一致するパターンが見つかったら、
views.hello_worldビュー関数を実行します。hello_worldビュー関数はHttpResponse("Hello, Django world!")を返します。- クライアント(ウェブブラウザ)は「こんにちは、Djangoの世界!」というメッセージを画面に表示します。
Django Viewsの基礎 - テンプレートをレンダリングする
単純なテキストの代わりにHTMLページを返したい場合はどうすればよいでしょうか?Djangoのテンプレートシステムを使えばいいのです:
django.shortcuts from django.shortcuts import render
def home(request)です:
context = {'message': 'ようこそ!}
return render(request, 'home.html', context)このビューは home.html テンプレートをレンダリングします、 文脈 辞書のデータをテンプレートに渡します。
コード解説
1.
django.shortcuts from django.shortcuts import render
- 意味Djangoの
django.shortcutsモジュールでレンダリング関数を取得します。- 説明:
レンダリング関数はテンプレートをレンダリングしてHTTP応答を返す便利なツールです。 この関数は3つの引数を受け取ります:
リクエストHTTP リクエストオブジェクト。テンプレート名:レンダリングするテンプレートファイルへのパス。文脈(オプション):テンプレートに渡すデータを含む辞書。2.
def home(request):
- 意味:
ホームという名前のビュー関数を定義します。- 説明: この関数は、クライアントからのHTTPリクエスト(
リクエスト)を受けて処理した後、HTTPレスポンスを返します。Djangoで全てのビュー関数は最初のパラメータとしてリクエストオブジェクトを受け取ります。3.
context = {'message': 'ようこそ!'} }
- 意味:
文脈という辞書を生成します、メッセージキエ'ようこそ!'という値を割り当てます。- 説明:
文脈はテンプレートに渡すデータを入れる辞書です。 このデータはテンプレートで動的に使うことができます。例えば{{ message }}のように、テンプレートの変数として使用されます。4.
return render(request, 'home.html', context)
- 意味:
レンダリング関数を使用してhome.htmlテンプレートをレンダリングし、その結果をHTTP応答として返します。- 説明:
リクエストHTTP リクエストオブジェクト。'home.html':レンダリングするテンプレートファイルのパス。Djangoは基本的にテンプレートディレクトリでこのファイルを探します。文脈:テンプレートに渡すデータを含む辞書。全体的な動作
- ユーザーがウェブブラウザで
/home/URLでアクセスします。- Djangoは
ホームビュー関数を実行します。ホームビュー関数は文脈辞書を生成し、辞書を作成します、メッセージキエ'ようこそ!'という値を割り当てます。レンダリング関数はhome.htmlテンプレートをレンダリングするとき文脈データを転送します。- テンプレートエンジンは
home.htmlファイルを処理します、{{ message }}部分を'ようこそ!'に置き換えます。- 最終的にレンダリングされたHTMLがクライアントに送信され、画面に表示されます。
Django Viewsの基礎 - 動的なURLパラメータを処理する方法
URLから動的に値を受け取って処理したいときは、このようにやってみてください:
def greet_user(request, username):
return HttpResponse(f"こんにちは、{username}さん!")そして urls.pyで:
path('greet//', views.greet_user, name='greet')、さあ /greet/철수/というようなURLにアクセスすると、「こんにちは、チルス様!」というメッセージが表示されます。

Django Viewsの基礎 - HTTPメソッドを処理する方法
Viewで色んなHTTPメソッド(GET、POSTなど)を処理することができます:
django.views.decorators.http import require_http_methods から
@require_http_methods(["GET", "POST"])
def my_view(request):
if request.method == 'GET':
# GETリクエスト処理
return HttpResponse("GETリクエストを受け取りました。")
elif request.method == 'POST':
# POSTリクエストを処理
return HttpResponse("POSTリクエストを受け取りました。")このViewはGETとPOSTのリクエストだけを許可し、それぞれを別々に処理します。
コード解説
1.
django.views.decorators.http import require_http_methods から
- 意味Djangoの
django.views.decorators.httpモジュールでrequire_http_methodsデコレータを持ち込みます。- 説明:
require_http_methodsはビュー関数が特定のHTTPメソッド(GET、POST、PUT、DELETEなど)だけを処理するように制限するデコレータです。許可されてないメソッドでリクエストが来たら405 方法不可応答を返します。2.
require_http_methods(["GET", "POST"])
- 意味:
my_viewビュー関数がGETとPOSTメソッドだけを許可するように設定します。- 説明: このデコレータはビュー関数に適用されます、
["GET", "POST"]リストに指定されたメソッドだけを許可します。他のメソッド(例えば、PUT, DELETE)でリクエストが来たら405 方法不可エラーを返します。3.
def my_view(request):
- 意味:
my_viewという名前のビュー関数を定義します。- 説明: この関数はHTTPリクエスト(
リクエスト)を処理し、適切なHTTP応答を返します。Djangoでは、すべてのビュー関数は最初のパラメータにリクエストオブジェクトを受け取ります。4.
if request.method == 'GET':
- 意味:リクエストメソッドがGETであることを確認します。
- 説明:
request.methodは現在のリクエストのHTTPメソッド(GET、POSTなど)を表します。この条件文はリクエストがGETメソッドである場合のみ実行されます。5.
return HttpResponse("GETリクエストを受け取りました。")
- 意味: 「GETリクエストを受け取りました」というメッセージを含むHTTP応答を返します。
- 説明:
HttpResponseはDjangoでHTTPレスポンスを生成するクラスです。 この場合、単純なテキストレスポンスを返します。6.
elif request.method == 'POST':
- 意味: リクエストメソッドがPOSTであることを確認します。
- 説明: この条件文は、リクエストがPOSTメソッドの場合のみ実行されます。
7.
return HttpResponse("POSTリクエストを受け取りました。")
- 意味: 「POSTリクエストを受け取りました」というメッセージを含むHTTP応答を返します。
- 説明: POST リクエストが来たら、このメッセージを返します。
全体的な動作
- クライアントが
my_viewビュー関数にGETまたはPOSTリクエストを送信します。require_http_methods(["GET", "POST"])デコレータはリクエストメソッドがGETかPOSTかを確認します。
- 許可されたメソッド(GET、POST)の場合、ビュー関数が実行されます。
- 許可されていないメソッド(例えば、PUT、DELETE)の場合、
405 方法不可エラーを返します。- ビュー関数内部で
request.methodを確認してGETまたはPOSTリクエストを処理します。
- GETリクエストの場合:「GETリクエストを受け取りました」というメッセージを返します。
- POSTリクエストの場合:「POSTリクエストを受け取りました」というメッセージを返します。
Django Viewsの基礎 - データベースと対話する
Viewでデータベースのデータを取り込んで使うことができます:
from django.shortcuts import render
from .models import Book
def book_list(request):
books = Book.objects.all()
return render(request, 'book_list.html', {'books': books})このViewはすべてのBookオブジェクトを取得してテンプレートに渡します。
コード解説
django.shortcuts from django.shortcuts import render
- Djangoのshortcutsモジュールでrender関数を取得します。
- render関数はテンプレートをロードしてコンテキストデータと一緒にHttpResponseオブジェクトを返す便利な関数です。
.models from .models import Book
- 現在のアプリのmodels.pyファイルからBookモデルを取得します。
- '.は現在のディレクトリを意味します。
def book_list(request):
- book_listというビュー関数を定義します。
- この関数はHTTPリクエスト(request)をパラメータとして受け取ります。
books = Book.objects.all()
- Bookモデルの全てのオブジェクトをデータベースから取得してbooks変数に保存します。
all()メソッドはモデルのすべてのレコードをクエリセットとして返します。return render(request, 'book_list.html', {'books': books})
- render関数を使ってHTTP応答を生成します。
- 第一因子
リクエストは元のHTTPリクエストオブジェクトです。- 第二因子
'book_list.html'は使用するテンプレートファイルの名前です。- 第三因子
{'books': books}はテンプレートに渡すコンテキストデータです。ここでは'books'というキーでbooksクエリセットを渡します。
Django Viewsの基礎 - リダイレクトを処理する方法
時々、ユーザーを別のページにリダイレクトする必要がある場合があります:
django.shortcuts from django.shortcuts インポートリダイレクト
def redirect_view(request):
return redirect('home') # 'home' はURL名です。このViewはユーザーを「home」という名前のURLにリダイレクトします。
コード解説
django.shortcuts from django.shortcuts インポートリダイレクト
- Djangoのshortcutsモジュールでredirect関数を取得します。
- redirect関数は、ユーザーを他のページにリダイレクトするために使用される便利な関数です。
def redirect_view(request):
- redirect_viewというビュー関数を定義します。
- この関数はHTTPリクエスト(request)をパラメータとして受け取ります。
return redirect('home')
- redirect関数を使用してユーザーを'home'という名前のURLにリダイレクトします。
- 'home'はDjangoのURL設定で定義されたURL名です。
- この関数はHTTPリダイレクト応答を生成します。
Django Viewsの基礎仕上げ
ここまでDjango Viewsの基礎について見てきました。 ViewsはDjangoアプリケーションの核心であり、ユーザーのリクエストを処理し、データを処理し、応答を返す全てのプロセスがViewsで行われます。
最初は複雑に見えるかもしれませんが、一つ一つ覚えていけば、すぐにマスターできるようになります。 練習と実験を繰り返してください。Django Viewsを使いこなせるようになれば、あなたのWeb開発スキルはさらにアップグレードされることでしょう。
ちなみに、Django Viewsに負けず劣らず重要な概念がModelsですね。 Django Modelsの基礎:データベース構造を簡単に理解するための完全ガイド ポストを通して、その基礎知識を身につけましょう!
用語解説
- ビュー: ユーザーのリクエストを処理し、応答を返すPython関数
- URLconf: URLパターンとViewを接続する設定
- HttpResponse:Viewが返す応答オブジェクト
- render():テンプレートを呼び出してHttpResponseオブジェクトで返す関数
- 動的URL: URLに変数を含めることで動的に処理する方法
- HTTPメソッドGET、POSTなど、クライアントがサーバーに要求する方式
- ORM: Object-Relational Mapping、Djangoでデータベースを簡単に扱えるようにするためのツール
Django Views、少しは慣れましたか?Viewsをマスターすれば、Djangoで何でも作れるようになります。 これからも勉強と練習を続けましょう。あなたのDjangoの旅を応援します!







