• 2018-06-04
ウズマスター戦記
ウズマスター戦記 https://www.uzumax.org/2018/06/djangohtml_4.html

DjangoでHTMLのテンプレートに変数を渡す

DjangoでHTMLのテンプレートレンダリングを行う」にて、views.pyの処理とテンプレートファイルを結び付ける説明を行いました。

続きまして、テンプレートに対し変数を流し込む方法をご説明します。


基本的なパラメータの渡し方

まずは変数を含むテンプレートファイルを以下のように作成します。

hensu.html

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>日本一平凡なサンプル</title>
</head>
<body>
こんにちは。

{{name}}です。年齢は{{age}}歳です。
</body>
</html>

直観的に分かると思いますが、{{name}}{{age}}の所が変数です。

これに向かってパラメータを流し込む処理はこちら。

views.py

from django.shortcuts import render
def hensu_render_index(request):
    # テンプレートに挿入する変数をセットアップ
    context = {
        "name": "ウズマスター",
        "age": "35",
    }

    return render(request, 'start_samples/hensu.html', context)

直観でお分かり頂けると思います。

contextという辞書(ディクショナリ)形式の変数の中に、「name」「age」というキーでセットしておけば、レンダリング時に変数が自動セットされます。

これが一番簡単なパターンです。

オブジェクト指向で丸ごとパラメータに渡す

上の記述は「name」「age」など変数を一個一個渡すものですが、昨今の開発の常識であるオブジェクト指向はそうじゃないですよね。

オブジェクトを丸ごとレンダリングに流し込んで、オブジェクトの中のそれぞれの変数をセットするのが通常の開発のやり方です。

オブジェクトを丸ごと渡す時のやり方はこちら。

hensu2.html

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>日本一平凡なサンプル</title>
</head>
<body>
こんにちは。

{{person.name}}です。年齢は{{person.age}}歳です。
</body>
</html>

views.py

from django.shortcuts import render
def hensu_render_index2(request):
    # テンプレートに挿入する変数をセットアップ
    person = {
        "name": "ウズマスター",
        "age": "35",
    }

    context = {"person": person}

    return render(request, 'start_samples/hensu2.html', context)

オブジェクト単位で丸ごと渡した場合、テンプレート側では{{person.name}}{{person.age}}のように.(ドット)で繋ぎ合わせて下さい。

ドットで繋ぐ回数に制限はありません。
オブジェクト指向を正規化すると複数オブジェクトを組み合わせて一つのオブジェクトが形成されますが、ドットを二回、三回と繋いでいけば最後のパラメータまで辿り着けます。

バックナンバー

0 件のコメント:

コメントを投稿

お気軽にコメント下さい。