これで、テンプレートを使ったページ表示ができるようになりました。が、最後に一つ、ここで作成したもので一つ「なんで?」と思う部分があったはずなので、それについて触れておきましょう。
それは、「
templates」フォルダや「
static」フォルダの中にテンプレートファイルやスタティックファイルを置くとき、どうして更に「
hello」というフォルダを作ってその中においているのか?という点です。
例えば、テンプレートファイルをレンダリングするとき、こんな具合に実行していましたね。
render(request, 'hello/index.html', context)
'hello/index.html'というのは、「hello」フォルダの中の「index.html」を指定しています。だったら、「templates」フォルダの中にそのままindex.htmlを置いたら、
'index.html' だけで済んで便利じゃないでしょうか?
これは、実はそのとおりで、「templates」内にそのままindex.htmlを置き、renderの際に
'index.html'と指定すればちゃんと認識します。「じゃあ、helloってフォルダはいらないのか」と思うでしょうが、そういうわけでもないのです。
Djangoでは、テンプレートやスタティックファイル類は、名前で識別しています。このため、例えば複数のアプリケーションがあったとき、それぞれの「templates」内にindex.htmlがあると、どのindex.htmlを使おうとしているのかわからなくなってしまうのです。
このため、「templates」内にアプリケーション名のフォルダを作成してそこに配置し、テンプレート名を
'アプリケーション名/テンプレート名' という形で記述するのがいわばルールのようになっているんですね。
スタティックファイルの場合もこれは同じです。ですので、ちょっと面倒ですが、「テンプレートやスタティックファイルは、それぞれの配置場所内にアプリケーション名のフォルダを用意し、その中に置くのが基本」と覚えておきましょう。