Django 4 では、よりシンプルな構文でテンプレートを活用できます。
Django のテンプレートエンジンを使うと、HTML を動的に生成し、効率的に管理できます。
本記事では、Django 4 のテンプレートの基本構造と、変数、フィルタ、テンプレートタグの使い方を解説します。
Django のテンプレートは、HTML 内で Python のデータを動的に埋め込むための仕組みです。 templates/
ディレクトリ内にテンプレートファイルを作成し、ビューと連携して使用します。
✅ 基本的な流れ
render()
を使ってテンプレートにデータを渡すプロジェクトの settings.py
にテンプレートディレクトリを追加します。
PYTHONfrom pathlib import Path BASE_DIR = Path(__file__).resolve().parent.parent TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [BASE_DIR / 'templates'], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
✅ ポイント
'DIRS': [BASE_DIR / 'templates']
で templates/
ディレクトリを指定'APP_DIRS': True
を設定すると base/templates/
も自動的に検索対象になるまず、base/templates/
ディレクトリを作成し、その中に home.html
を作成します。
HTML<!-- base/templates/home.html --> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <title>ホームページ</title> </head> <body> <h1>ようこそ {{ user_name }} さん!</h1> </body> </html>
views.py
で render()
を使ってテンプレートを表示します。
PYTHONfrom django.shortcuts import render def home_view(request): context = {'user_name': '太郎'} return render(request, 'home.html', context)
✅ ポイント
context
に渡したデータ (user_name
) が {{ user_name }}
でテンプレートに埋め込まれるDjango のテンプレートでは、ロジックを記述するための「テンプレートタグ」を使用できます。
HTML{% if user_name %} <p>こんにちは、{{ user_name }} さん!</p> {% else %} <p>ゲストとして閲覧中</p> {% endif %}
HTML<ul> {% for item in items %} <li>{{ item }}</li> {% endfor %} </ul>
フィルタ | 説明 |
---|---|
{{ text | lower }} | 小文字に変換 |
{{ text | upper }} | 大文字に変換 |
{{ list | length }} | リストの長さを取得 |
複数のページで共通のレイアウトを作成する場合、テンプレートの継承を使います。
HTML<!-- base/templates/base.html --> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <title>{% block title %}サイトタイトル{% endblock %}</title> </head> <body> <header> <h1>サイト共通ヘッダー</h1> </header> <main>{% block content %}{% endblock %}</main> </body> </html>
{% extends 'base.html' %} {% block title %}ホームページ{% endblock %} {% block content %} <h1>ようこそ {{ user_name }} さん!</h1> {% endblock %}
✅ メリット
base.html
に共通レイアウトを記述し、各ページで extends
を使うことで管理が楽になるblock
タグを使って、ページごとに異なるコンテンツを挿入可能render()
を使ってビューからデータを渡し、テンプレートで {{ 変数 }}
を表示できる{% if %} や {% for %}
を使って条件分岐やループ処理が可能回 | タイトル | リンク |
---|---|---|
第 1 回 | Django: フレームワークの概要と特徴 | 詳 細 |
第 2 回 | Django: プロジェクトとアプリの構造 | 詳 細 |
第 3 回 | Django: ルーティングとビューの基本 | 詳 細 |
第 4 回 | Django: テンプレートの使い方 | この記事 |
第 5 回 | Django: 静的ファイルの管理 | 詳 細 |
第 6 回 | Django: フォームと入力処理 | 詳 細 |
第 7 回 | Django: モデルとデータベースの基本 | 詳 細 |
第 8 回 | Django: 管理画面の活用 | 詳 細 |
第 9 回 | Django: ルーティングのルールと優先順位 | 詳 細 |
第 10 回 | Django: クラスベースビュー(CBV) | 詳 細 |
当サイトの情報は、一般的な参考情報として提供しております。
正確な情報の掲載に努めておりますが、その内容の正確性・完全性・最新性を保証するものではありません。
記事の内容をご利用の際は、ご自身の責任において判断し、必要に応じて専門家にご相談ください。
当サイトの情報の利用により生じたいかなる損害についても、一切の責任を負いかねますのでご了承ください。
※ 本ページでは、著作権法に基づき、適正な引用の範囲内でコンテンツを紹介しています。
オリジナルの情報は発信元をご確認ください。
もし問題がありましたら、こちら からお問い合わせください。