Python入門 Djangoの使い方(その8)テンプレートに値を渡す。
はじめに
不定期連載のPython入門第22回目です。今回もPythonのWebフレームワーク「Django」を使っていきましょう。DjangoはPythonのWebフレームワークの代表格です。今回はPython入門として、前回に引き続き、Djangoのテンプレートとビューの使い方を見ていきます。
今回の内容:
テンプレートに値を渡す。
前提条件:
- Pythonバージョン:Python3
- Djangoバージョン:Django1.10.5
- 実行環境:Windows8
- ツール:VisualStudioCommunity2015
views.pyの記述
Djangoでビューの設定は「views.py」で行います。前回は「views.py」で以下のようにテンプレートを呼び出す記述をしました。
1 2 | def test1(request): return render(request, 'sample1.html' ) |
今回はこの記述をカスタマイズしてテンプレートに変数を渡せるようにしましょう。
以下のようにrenderメソッドの引数を追加します。
1 2 3 4 5 6 | def test1(request): params = { 'param1' : 'こんにちは' , 'param2' : 'こんばんは' , } return render(request, 'sample1.html' , params) |
paramsという辞書オブジェクトを作成し、param1に「こんにちは」、param2に「こんばんは」をセットします。
そしてそのparams変数を「render」メソッドの第三引数にセットします。こうすることで、値をテンプレート「sample1.html」に渡せます。
テンプレートに変数を埋め込む。
それでは次に渡された変数をテンプレート側で表示してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 | <! DOCTYPE html> < html lang = "ja" > < head > < meta charset = "utf-8" /> < title >test</ title > </ head > < body > パラメータ1つ目:{{ param1 }}< br /> パラメータ2つ目:{{ param2 }} </ body > </ html > |
以下のように表示されればOKです。
パラメータ1つ目:こんにちは
パラメータ2つ目:こんばんは
タプル、辞書、リスト変数を渡す。
以下のようにスカラー変数以外の変数も渡すことが可能です。
1 2 3 4 5 6 7 | params = { 'param1' : 'こんにちは' , 'param2' : 'こんばんは' , 'param3' : ( "グー" , "チョキ" , "パー" ), 'param4' :{ "a" : "apple" , "b" : "banana" , "c" : "cherry" }, 'param5' :[ 111 , 222 , 333 ] } |
テンプレート側では以下のように呼び出すことができます。
1 2 3 | <li>タプル:{{ param3. 0 }}< / li> <li>辞書:{{ param4.a }}< / li> <li>リスト:{{ param5. 0 }}< / li> |
「.(ドット)」でつなぐところがポイントです。
以下のように表示されればOKです。
タプル:グー
辞書:apple
リスト:111
まとめ
今回はビューからテンプレートへの変数の引き渡し方法を見てみました。辞書オブジェクトを用いることで複数の値を渡すことができます。オブジェクトにタプルや辞書をセットすることもできました。
また、テンプレートでの変数表示も比較的簡単に行うことができるので、HTML感覚でテンプレート編集を行うことができます。次回はテンプレートでの制御構文について学習していきたいと思います。