テンプレートを利用しよう (2/6)
作成:2017-12-23 08:38
更新:2017-12-23 08:38
更新:2017-12-23 08:38
■ビュー関数を修正する
では、続いてビュー関数を修正しましょう。「hello」内のviews.pyを開き、そこに記述してあるindex関数を下のリスト欄のように書き換えて下さい。
今回は、まずcontextという辞書を用意しています。ここには、'msg' というキーの値が用意されていますね。
この辞書は、テンプレート側に渡す各種の値を設定するものです。先ほど、index.htmlの中に以下のような分を記述してあったのを思い出して下さい。
この {{msg}} というのが、contextリスト内に用意した 'msg' の値です。テンプレートでは、このように、ビュー関数側から渡された値を {{ 値名 }} というように記述して出力させることができるのです。
テンプレートに渡す辞書を用意したら、以下のようにしてテンプレートをレンダリングしています。
renderというのは、先にHttpResponseインスタンスを作成して返したもののショートカット関数です。テンプレートを利用する場合、テンプレートファイルをロードし、それをレンダリングした結果をHttpResponseに設定する、といった作業をしないといけません。そこで、それらを自動で行ってくれる関数を用意してあるのですね。
このrender関数は、以下のように呼び出します。
第1引数は、この関数に渡されているHttpRequestをそのまま渡します。第2引数に、使用するテンプレート名を指定します。これは、「templates」フォルダ内のパスとして記述して下さい。ここでは「hello」フォルダ内にindex.htmlという名前で用意してあるので、'hello/index.html' となります。第3引数には、テンプレート側に渡す値をまとめた辞書(ここでは、context)を指定します。
今回は、まずcontextという辞書を用意しています。ここには、'msg' というキーの値が用意されていますね。
この辞書は、テンプレート側に渡す各種の値を設定するものです。先ほど、index.htmlの中に以下のような分を記述してあったのを思い出して下さい。
<p>{{msg}}</p>
この {{msg}} というのが、contextリスト内に用意した 'msg' の値です。テンプレートでは、このように、ビュー関数側から渡された値を {{ 値名 }} というように記述して出力させることができるのです。
テンプレートに渡す辞書を用意したら、以下のようにしてテンプレートをレンダリングしています。
return render(request, 'hello/index.html', context)
renderというのは、先にHttpResponseインスタンスを作成して返したもののショートカット関数です。テンプレートを利用する場合、テンプレートファイルをロードし、それをレンダリングした結果をHttpResponseに設定する、といった作業をしないといけません。そこで、それらを自動で行ってくれる関数を用意してあるのですね。
このrender関数は、以下のように呼び出します。
render( [HttpRequest] , テンプレート名 , 辞書 )
第1引数は、この関数に渡されているHttpRequestをそのまま渡します。第2引数に、使用するテンプレート名を指定します。これは、「templates」フォルダ内のパスとして記述して下さい。ここでは「hello」フォルダ内にindex.htmlという名前で用意してあるので、'hello/index.html' となります。第3引数には、テンプレート側に渡す値をまとめた辞書(ここでは、context)を指定します。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
# from django.shortcuts import render を追記しておく def index(request): context = { 'msg': 'this is sample page.', } return render(request, 'hello/index.html', context)
※関連コンテンツ