Djangoでテンプレートを使う
とりあえずの設定。以下のファイルを編集する。
- アプリ/views.py
- views.py内で定義した関数(ビュー関数)からテンプレートファイルを呼び出し、HTTPレスポンスを返す
- config/settings.py
- テンプレートファイルの置き場所を設定する
- template/テンプレート.html
- 実際のテンプレートファイル(ファイル名、サブディレクトリは任意)
ビュー関数を書く
とりあえずhelloに対応する内容。
python/app_name/views.py
from django.shortcuts import render # render(request, 'hello.html', context)
from django.http import HttpResponse # HttpResponse('Hello, World !!')
from django.shortcuts import render
from django.views import View
class HelloView(View):
def get(self, request, *args, **kwargs):
context = {
'message': "Hello World! from View!!",
}
return render(request, 'hello.html', context)
hello = HelloView.as_view()
render関数がテンプレートを呼び出してHTMLを生成する関数。
- 第1引数のrequestはとりあえず書いておく。
- 第2引数'hello.html'でテンプレートファイルの指定。templates/フォルダ以下の相対パス指定。
- 第3引数contextはテンプレートに渡す変数の辞書。
- テンプレートファイルの中ではキーを変数名として値を参照できる。
- テンプレートファイル名では柔軟な変数の追加、変更はできないので、基本contextに全部詰め込む。
最後のhello = HelloView.as_view()
はHelloViewクラスをhelloビュー関数として紐づける操作。
この関数名はurls.pyで設定する関数名と対応させる。
テンプレートの置き場所を設定する
テンプレートファイルのベースになる場所を設定する。
下記はプロジェクトフォルダ/templates/
に設定。
config/settings.py
57c58
< 'DIRS': [],
---
> 'DIRS': [os.path.join(BASE_DIR, 'templates')],
テンプレートファイルを用意する
上記のconfig/settings.py
に記載したディレクトリを作って
その中にテンプレートファイルを作成する。
$ mkdir templates
$ vi templates/hello.html
テンプレートファイルの内容。今回はmessage
という変数を表示するだけ。
詳細な書き方は下記。
The Django Template Language | Django ドキュメント | Django
templates/hello.html
{{ message }}
動作確認
WEBブラウザでhttp://IPアドレス:8000/app_name/で
Hello World! from View!!
と表示されればOK