Djangoテンプレート言語の基礎

テンプレートとは何か

HTMLファイルの中にDjangoテンプレート言語が含まれている場合、それは単なるHTMLファイルではなくなります。このようなファイルをテンプレートと呼びます。

テンプレート言語の分類

変数の利用: {{ }} 構文

Djangoテンプレート内で複雑なデータ構造を処理する鍵はピリオド(.)です。 views.py の例:
def sample_view(request):
    username = "サンプルユーザー"
    num = 100
    list_data = [5, 10, 15]
    dict_data = {"名前": "テスト", "年齢": 30}

    class User:
        def __init__(self, name, age):
            self.name = name
            self.age = age

        def greet(self):
            return "こんにちは"

    user1 = User("田中", 28)
    user_list = [user1]

    return render(request, "sample.html",
                  {
                      "username": username,
                      "num": num,
                      "list_data": list_data,
                      "dict_data": dict_data,
                      "user1": user1,
                      "user_list": user_list,
                  })
テンプレートファイル template/sample.html の例:
<h4>変数{{ var }}</h4><hr>
<p>{{ username }}</p>
<p>{{ num }}</p>
<p>{{ list_data.0 }}</p>
<p>{{ dict_data.名前 }}</p>
<p>{{ user1.greet }}</p>
<p>{{ user_list.0.name }}</p>

タグの利用: {% tag %} 構文

タグは `{% tag %}` のような形式で表されます。いくつかのタグは出力を生成し、他のタグは制御フロー(例えば、ループや条件分岐)を管理します。

for タグ

<h3>リストの要素をループして表示</h3><hr>
{% for item in user_list %}
    <p>{{ item.name }}, {{ item.age }}</p>
{% endfor %}

if タグ

{% if num > 50 %}
    <p>{{ num }}は50より大きいです。</p>
{% elif num == 50 %}
    <p>{{ num }}はちょうど50です。</p>
{% else %}
    <p>{{ num }}は50未満です。</p>
{% endif %}

フィルターの利用: {{ obj|filter_name:param }} 構文

デフォルト値の設定

<p>デフォルト値: {{ var|default:"値が存在しない場合" }}</p>

文字列長さの取得

<p>文字列の長さ: {{ text|length }}</p>

サイズフォーマット

<p>ファイルサイズ: {{ size|filesizeformat }}</p>

日付のフォーマット

<p>日付: {{ date_var|date:"Y-m-d" }}</p>

スライス操作

<p>スライス結果: {{ long_text|slice:"5:-1" }}</p>

文字列の切り詰め

<p>切り詰め結果: {{ long_text|truncatechars:20 }}</p>

タグ: Django テンプレート Python

8月5日 10:38 投稿