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」で以下のようにテンプレートを呼び出す記述をしました。
def test1(request): return render(request, 'sample1.html')
今回はこの記述をカスタマイズしてテンプレートに変数を渡せるようにしましょう。
以下のようにrenderメソッドの引数を追加します。
def test1(request): params = { 'param1': 'こんにちは', 'param2': 'こんばんは', } return render(request, 'sample1.html', params)
paramsという辞書オブジェクトを作成し、param1に「こんにちは」、param2に「こんばんは」をセットします。
そしてそのparams変数を「render」メソッドの第三引数にセットします。こうすることで、値をテンプレート「sample1.html」に渡せます。
テンプレートに変数を埋め込む。
それでは次に渡された変数をテンプレート側で表示してみましょう。
<!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つ目:こんばんは
タプル、辞書、リスト変数を渡す。
以下のようにスカラー変数以外の変数も渡すことが可能です。
params = { 'param1': 'こんにちは', 'param2': 'こんばんは', 'param3': ("グー", "チョキ", "パー"), 'param4':{"a":"apple","b":"banana","c":"cherry"}, 'param5':[111,222,333] }
テンプレート側では以下のように呼び出すことができます。
<li>タプル:{{ param3.0 }}</li> <li>辞書:{{ param4.a }}</li> <li>リスト:{{ param5.0 }}</li>
「.(ドット)」でつなぐところがポイントです。
以下のように表示されればOKです。
タプル:グー
辞書:apple
リスト:111
まとめ
今回はビューからテンプレートへの変数の引き渡し方法を見てみました。辞書オブジェクトを用いることで複数の値を渡すことができます。オブジェクトにタプルや辞書をセットすることもできました。
また、テンプレートでの変数表示も比較的簡単に行うことができるので、HTML感覚でテンプレート編集を行うことができます。次回はテンプレートでの制御構文について学習していきたいと思います。