Python | Django | テンプレートにおけるタグ・リファレンスの使い方

2021年6月22日

公開日:2021/6/22

Pythonには,DjangoというWebアプリケーションフレームワークがある.フレームワークのため,Djangoを利用するとWebアプリを通常よりも短時間で開発することが可能になる.

前記事にて,テンプレートにおけるフィルタ・リファレンスの使い方を記した.前記事での設定をそのまま引き継いだ上で,本記事では,テンプレートのおけるタグ・リファレンスを説明する.

◆実施環境

Python 3.8.8
Django 3.2.3

  1. タグ・リファレンスの準備

前の記事である"テンプレートにおけるフィルタ・リファレンスの使い方"の準備をそのまま利用する.

“tmp_project/templates/index.html”にタグ・リファレンスを記載する.そのため,"index.html"内はブランクにした.以下にブラウザで出力する方法を記す.

ターミナルを開き,”conda activate 仮想環境名”を実行し,仮想環境に移行する.”tmp_project”のディレクトリで”python manage.py runserver”を実行すると,以下が出力される.

System check identified no issues (0 silenced).
June 22, 2021 - 16:49:05
Django version 3.2.3, using settings 'tmp_project.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

“http://127.0.0.1:8000/”をクリックし,ブラウザを開くと以下のように表示される.

ブラウザのURLに”http://127.0.0.1:8000/template_app/chocolate”を記入し,ブラウザを開くと,以下のようにブランクになっている.

 

  1. タグ・リファレンスの一覧

テンプレートにおける3つのタグ・リファレンス(“filter", “now", “firstof")を各々説明する.各タグ・リファレンスをどのように利用するのかを以下に明示し,”tmp_project/templates/index.html”にタグ・リファレンスを実際に記述する.また,当該記述が,ブラウザにどのような出力されるのかも確認する.

■filter

囲うことで,変数や値全体にフィルタ・リファレンスを与える.以下のように利用する.

{% filter "フィルタ・リファレンス" %}
"変数や値"
{% endfilter %}

実用例としてフィルタ・リファレンスである"upper"を利用すると,以下のようになる.なお,"product_name"と"maker"は変数となる.

{% filter upper %}
<h2>good mornint</h2>
<h2>hello world!</h2>
<h2>{{ product_name}}</h2>
<h2>{{ maker}}</h2>
{% endfilter %}

■実行結果

ブラウザには以下のように出力される.値や変数がすべて大文字になった.

■now

指定したフォーマットの文字列に従い,現在の日時を表示する.以下のように利用する.

{% now "フォーマット文字列 (ex. Y M j)" %} # Y:西暦,M:月,j:日を記す

実用例として以下のように利用する.

{% now "Y年m月j日 D H:i" %}

■実行結果

ブラウザには以下のように出力される.現在日時が指定したフォーマットで出力される.

■firstof

タグに渡された変数で,Falseでない最初の変数の値を出力する.すべての変数が"False"の場合,引数が出力される.以下のように利用する.

{% firstof "変数1" "変数2" "引数" %}

実用例として以下のように利用する."maker"は変数として利用されている.

# 1の処理
{% firstof taste maker "hello" %} # "maker"は変数として利用されている.

# 2の処理
{% firstof taste abc "hello" %} # 変数なしのため,引数である"hello"が出力される.

■実行結果

# 1の結果

ブラウザには以下のように出力される.変数"maker"の値である"meiji"が出力される.

# 2の結果

ブラウザには以下のように出力される."taste"も"abc"も変数ではないため,"False"になり,引数である"hello"が出力される.

以上