DjangoはPythonで開発されたWebアプリケーションフレームワークであり、テンプレート機能はその中で重要な機能の一つです。

Djangoのテンプレート機能を使用することで、動的なWebページを生成することができるようになり、同じようなhtmlページを用意する必要がありません。

Djangoテンプレートの使い方と作成する場所

Djangoのテンプレートを使うには、まず、プロジェクトのsettings.pyに使用するアプリケーションを登録します。

settings,pyの「INSTALLED_APPS」を探し、アプリケーションフォルダ名「’sample’,」を追加します。

# Application definition

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'sample',
]

次は、使用するテンプレートフォルダを作成します。プロジェクト名「test_app」でアプリケーションフォルダ「sample」なら、

test_app/sample/templates/sample

という階層でフォルダを作成します。このtemplates/sampleフォルダに、index.htmlなどのテンプレートを入れていくという形になります。

テンプレートライブラリー(タグ)一覧

Djangoテンプレートには、あらかじめ用意されている専用のライブラリがあります。このライブラリを使うことによって、動的なWEBページを簡単に作ることができるようになります。

以下は、主なテンプレートライブラリー(タグ)ですが、詳しくはDjango公式ドキュメントを参照してください。

変数の表示{{variable}}

veiws.pyで設定している'変数'をテンプレートに表示させるには、{{variable}}二重括弧を使います。変数はveiws.pyから渡されるコンテキスト(第3引数)に含まれている必要があります。

ループ{% for item in list %} … {% endfor %}

リストやクエリセットなどの反復可能なオブジェクトを、テンプレート内でループさせるには、{% for item in list %} ... {% endfor %}を使います。

条件分岐{% if condition %} … {% elif condition %} … {% else %} … {% endif %}

テンプレート内で条件分岐するには、{% if condition %} ... {% elif condition %} ... {% else %} ... {% endif %}を使います。

テンプレートの継承{% extends %}{% block %}

テンプレートの継承は、{% extends %}{% block %}を使用します。

ベースとなるテンプレートがbace.htmlなら、子テンプレートの一番最初に、継承元の親テンプレートを{% extends 'base.html' %}と指定します。

bace.htmlと子テンプレートには、子テンプレートで表示させるコンテンツ部分を、{% block title %}{% endblock %}というように指定します。

URLの作成{% url %}

テンプレートでURLを作成するには、{% url %}を使用します。

<a href="{% url 'view_name' %}">Link</a>

'view_name'にはリンク先のビュー関数やURLパターンの名前を指定します。

テンプレートを使ってhtmlページを表示させる流れ

以下は、Djangoテンプレートでhtmlページを表示させる流れです。

設定ファイルが分かれていて、混乱することも多いと思います。まずはゆっくりと流れを理解するところから始めてください。

例)test_appの下層にhelloプロジェクトを作成。テンプレートindex.htmlを使い、formで入力した値を表示させる。