templateまとめ
関連記事
本題
どうなったらtemplateが読み込めるのか
作業中にテンプレートの読み込みエラーが出ることが多い。エラーが出るのは作業中のコードと記述しなければならないコードに乖離が生じているからである。エラーコードをすばやく対処するにはあるべきコードとエラーが出たコードとの乖離を見つけなければならない。それはどのような原理で動いているか知っておくことが重要である。
templateが動く仕組み(仮説)
どうなったら読み込みができるのか
- どのテンプレートを使うか規定しているか?
- 規定したテンプレートを探すための環境が設定されているか?
1.どのテンプレートを使うか規定しているか?
使用するテンプレートは、views.pyにて規定する。renderを使う場合にはreturn renderの第2引数で規定する。renderを使わない場合にはListViewやDetailViewを使う場合で、template_nameによって規定する。
2.規定したテンプレートを探すための環境が設定されているか?(仮説)
すべて理解しているわけでもないし、理解していることをすべて書く余裕が無いので根本的な仕組みについて書く。
適切にテンプレートエンジンを設定しているか?
テンプレートエンジン設定
どのテンプレートを使うかは1で規定する。規定されたテンプレートはプロジェクト内のファイルから探し出す必要がある。このテンプレートファイルを探し出すものをどうやらテンプレートエンジンと呼んでいるようだ。このテンプレートエンジンは'BACKEND'で規定されている。ではどこからテンプレートを探させるかを設定するのが、'DIRS': と'APP_DIRS': Trueである。HOWの部分である。
この2つは別物であって両方を設定することも、片方だけを設定することもできる。
'DIRS': にディレクトリを記述することでそのディレクトリから探してテンプレートを見つける。'APP_DIRS': Trueと設定されている場合、アプリケーションからテンプレートを探すように動いてくれる。'APP_DIRS': Trueの場合アプリケーション内にテンプレートを探し出されない場合がある。それはsettings.pyにアプリケーションとして登録していないアプリケーションからテンプレートを探す場合である。アプリケーションとして登録していないところからテンプレートを探すのは不可能なので、その場合はアプリケーションであることを登録すること。それはINSTALLED_APPSに記述すれば良い。