テンプレートはビューで指定します。
例えば以下のようなビューがあったとします。
1 2 3 | from django.shortcuts import render_to_response def hoge(req): return render_to_response("hoge.html", {}) |
-
TEMPLATE_DIRS
ユーザが自ら指定する検索ディレクトリへのパスのリストです。
これはデフォルトでは空です。タプルで定義され、
TEMPLATE_DIRS = (
"/a/b/template/",
"/a/template/",
)
などと定義すると、定義した順番でファイル検索が行われます。
-
django.template.loaders.filesystem.load_template_source
TEMPLATE_LOADERSにデフォルトで定義されているローダーです。 このローダーは、プロジェクト直下の「templates」というディレクトリがあった場合に、 そのディレクトリ内でテンプレートファイルを検索します。
-
django.template.loaders.app_directories.load_template_source
これもTEMPLATE_LOADERSにデフォルトで定義されているローダーです。 このローダーはINSTALLED_APPSにて登録されたアプリケーションディレクトリ直下の templatesディレクトリ以下を検索します。
アプリケーションディレクトリは「./manage.py startapp app_name」にて作成した ディレクトリ: app_nameのことを指します。詳しくは、過去の記事をを参照してください。
DjangoはビューにてHTMLを出力する際に、指定されたhoge.htmlを上記1〜3の順番で探索します。 最初にhoge.htmlが見つかると検索処理はそこで終了し、レンダリング処理へと移行します。
これが理解できるようになると、Adminページの見栄えを変更したい場合などにも役に立ちます。 AdminページはINSTALLED_APPSの「django.contrib.admin」にて実装されています。 従って、アプリケーション名はadminです。なので、プロジェクトディレクトリ直下のtemplates 直下にtemplates/admin/ディレクトリを作成し、その下に変更したいファイルと同一のファイルを 配置すれば、Adminページを表示する際にそのテンプレートファイルを使ってレンダリングすることが できるようになります。これについては、次回また詳しく説明します。