テンプレートでパラメータを使う
ここでは「テンプレートを利用したページ」で作成したコードを少しだけ発展させて、 テンプレートにパラメータを渡してみましょう。
テンプレート templates/myapp1/index.html を次のように書き換えます。
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="UTF-8">
<title>index.html</title>
<style>
body {
background-color: #B2EBF2;
font-family: sans-serif;
}
</style>
</head>
<body>
<h1>Hello, {{fname}}!</h1>
</body>
</html>
ポイントは次の箇所です。
<h1>Hello, {{fname}}!</h1>
{{ }} で囲ったところに、パラメータで渡した値が入ります。
ここでは {{ fname }} としていますので、fname という名前で渡したデータの値が入ります。
では、ビューにてパラメータを渡すところを書きます。
from django.http import HttpResponse
from django.template import loader
def index(request):
template = loader.get_template('myapp1/index.html')
context = {'fname':'Hanako'}
return HttpResponse(template.render( context, request))
パラメータに渡すパラメータはコンテキストといいます。 コンテキストのデータ型はディクショナリにして渡します。
ここで、コンテキストは次のようにしていますので、テンプレートには fname という名前のデータとして、 Hanako という文字が渡っているはずです。
context = {'fname':'Hanako'}
では、動作をみてみましょう。
開発サーバーの起動は次のコマンドでしたね。
$ python manage.py runserver
ブラウザからアクセスすると、次のように表示されるはずです。
確かに {{ fname }} とした箇所に、コンテキストで渡した値が入ることが確認できました。