Django: ルーティングとビューの基本

Django 4 の基礎(入門編)

日付:2025年2月18日

Django 4 の URL ルーティングとビューの基本的な仕組みを学び、シンプルな Web ページを作成する方法を解説します。

目 次

はじめに

Django 4 では、ユーザーがアクセスする URL と、それに対応する処理(ビュー)を設定することで、Web アプリケーションを構築できます。
本記事では、Django 4 の URL ルーティングの基本と、ビューの実装方法を詳しく解説します。

1. URL ルーティングとは?

Django 4 の URL ルーティングは、urls.py に定義され、ユーザーのリクエストを適切なビューにマッピングします。

基本的な流れ

  1. ユーザーが http://127.0.0.1:8000/home/ にアクセス
  2. Django 4 が config/urls.py を参照し、該当するパターンを探す
  3. base/urls.py にリクエストが渡り、対応するビュー関数を実行
  4. レスポンスとして HTML を返す

2. config/urls.py に base アプリを登録

Django 4 のプロジェクトを作成した直後は、config/urls.pyurlpatternsbase アプリのルーティングは含まれていません。
そのため、以下のように include を使って base.urls を登録する必要があります。

PYTHON
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), # 管理画面 path('', include('base.urls')), # base アプリの URL を登録 ]

ポイント

  • include('base.urls') を追加することで、base アプリの urls.py にルーティングが委譲される。
  • path('') のように指定すると、base.urls 内のパスが http://127.0.0.1:8000/ 直下のルートとして扱われる。

3. base/urls.py の作成

Django 4 の startapp base コマンドでは urls.py は作成されません。
そのため、手動で base/urls.py を作成する必要があります。

BASH
touch base/urls.py

作成後、以下のように urlpatterns を定義します。

PYTHON
from django.urls import path from .views import home_view urlpatterns = [ path('home/', home_view, name='home'), ]

コードの解説

  • path('home/', home_view, name='home')
    • home/ という URL にアクセスすると home_view が実行される
    • name='home' は後で URL の逆引きに使用できる

4. ビューの作成

base/views.py にビューを定義します。

PYTHON
from django.http import HttpResponse def home_view(request): return HttpResponse("<h1>ホームページ</h1>")

コードの解説

  • home_view(request): request を受け取り、レスポンスを返す関数
  • HttpResponse("<h1>ホームページ</h1>") により、HTML のレスポンスを直接返す

5. URL の逆引き

テンプレート内で name='home' を使用すると、ハードコーディングせずに URL を生成できます。

HTML
<a href="{% url 'home' %}">ホームへ</a>

メリット

  • URL が変更されてもテンプレートの修正が不要
  • URL の管理が簡単になる

6. Django 4 の開発サーバーで動作確認

ここまでの設定が完了したら、Django 4 の開発サーバーを起動し、動作を確認します。

BASH
python manage.py runserver

ブラウザで http://127.0.0.1:8000/home/ にアクセスすると、「ホームページ」が表示されます。

7. まとめ

  • config/urls.pybase.urlsinclude し、アプリごとのルーティングを管理。
  • base/urls.py を作成し、views.py 内のビュー関数と紐付ける。
  • {% url 'home' %} を使い、テンプレートから URL を参照できる。
  • python manage.py runserver で開発サーバーを起動し、動作を確認。