【django】テンプレートとは:使用方法(templatesフォルダ・変数・タグ )

/

【django】テンプレートとは:使用方法(templatesフォルダ・変数・タグ )

本記事では、Djangoにおけるテンプレート(templatesフォルダ・変数・タグ)について詳しく解説していきます。

テンプレートはただ単にtemplatesフォルダを作って、HTMLを書いたファイルを保存するだけではないです。

テンプレートを使いこなすことができると、Webアプリケーション作成の幅が非常に広がります。

views.py側で文字列でHTMLを作成もできますが、基本的にはテンプレートを使います。

本記事を通して、テンプレートに対する知識をより深めてください。

テンプレート(Template)

テンプレートとは

Djangoでは、テンプレートという仕組みを使ってHTMLを生成し、Webページを表示させることができます。

テンプレートのフォーマットはHTMLなので、今までWebサイトを作成した経験がある方には馴染みのある形で作成できます。

テンプレートは、フォームやモデルから取得したデータをビューから渡されます。
そしてそれらデータを使用してHTMLを生成します。

つまり、
テンプレートはHTMLでベースを書いておき、ビューから渡されたデータを反映させて、動的にHTMLを生成できるということです。

テンプレートエンジン(DjangoTemplates)

テンプレートを使用するために、テンプレートエンジンのDjangoTemplatesを利用します。
これはsettings.py内のTEMPLATESに以下のように設定されています。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        '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',
            ],
        },
    },
]

DjangoTemplatesはsettings.py内のINSTALLED_APPSに記載あるアプリケーションからtemplatesフォルダを探索します。

templatesフォルダ

templatesフォルダの作成

テンプレートを保存するための場所として、アプリケーションフォルダにtemplatesフォルダを作成します。

次に作成したtemplatesフォルダの直下にアプリケーション名と同じ名前のフォルダを作成します。そしてそのフォルダ内にテンプレートを保存します。

アプリケーションfive、テンプレート名index.htmlの場合は次のような階層構造となります。

five
└── templates
   └── five
      └── index.html

templatesフォルダ内にアプリケーション名のフォルダを作成するのにはもちろん理由があります。

DjangoTemplatesは異なるアプリケーションの中に同じファイル名のテンプレートがあった場合、それらを区別・判別することはできないです。

DjangoTemplatesがそれらを区別できるよう、名前空間を与えるためにアプリケーション名のフォルダを作成しているのです。

Djangoテンプレート言語

テンプレートには、HTML生成する際に値に変換される変数と、繰り返しや判定などのロジック制御をするタグ(ブロックタグ)を使用することができます。

以下でDjangoテンプレートで使用する変数とタグ(ブロックタグ)について見ていきましょう。

変数(variable)

テンプレートエンジンDjangoTemplatesはテンプレート内に変数を見つけると、変数を値に変換します。
変数は”{{”と”}}”で囲んで使用します。

{{ 変数 }}

タグ(ブロックタグ:block tag)

タグは、繰り返し(for文)や判定(if文)といった処理や、テンプレートの継承で使用されます。

タグは”{%”と”%}”で囲んで使用し、開始タグと終了タグの2つを必要とするタグもあります。

{% タグ %}

for

forタグを使うことで、繰り返し処理を行うことができます。

{% for list in lists %}
    <p>{{ list }}</p>
{% endfor %}

if, else

ifタグを使って、真・偽の判定を行い、真であればifタグ以下の処理を行います。
偽であれば、else以下の処理を行います。

{% if athlete_list %}
    <p>真です</p>
{% else %}
    <p>偽です</p>
{% endif %}

block

blockタグは、テンプレートの継承を行う際に使用します。

まとめ

本記事「【django】テンプレートとは:使用方法(templatesフォルダ・変数・タグ )」はいかがでしたか。

Djangoにおいてテンプレートは意外と理解が難しい部分なので、わかりやすく説明したつもりです。

またテンプレートには「テンプレートの継承」という重要な仕組みがあります。
それについては別記事で解説していきます。