libro
www.tuyano.com
初心者のためのDjango 2.0入門

テンプレートを利用しよう (6/6)

作成:2017-12-23 08:46
更新:2017-12-23 08:46

■なぜ、「hello」フォルダ内に置くの?

これで、テンプレートを使ったページ表示ができるようになりました。が、最後に一つ、ここで作成したもので一つ「なんで?」と思う部分があったはずなので、それについて触れておきましょう。

それは、「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」内にアプリケーション名のフォルダを作成してそこに配置し、テンプレート名を 'アプリケーション名/テンプレート名' という形で記述するのがいわばルールのようになっているんですね。

スタティックファイルの場合もこれは同じです。ですので、ちょっと面倒ですが、「テンプレートやスタティックファイルは、それぞれの配置場所内にアプリケーション名のフォルダを用意し、その中に置くのが基本」と覚えておきましょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

※関連コンテンツ

「初心者のためのDjango 2.0入門」に戻る