DjangoのTemplateローダ

2006/11/22 01:32

※ 商品のリンクをクリックして何かを購入すると私に少額の報酬が入ることがあります【広告表示】

ueblogのスクリーンキャストに対して、 嘘の補足を行ってしまいました

嘘というのは「settings.pyのTEMPLATE_DIRSに対して設定を行わなくても、プロジェクト直下とアプリケーション直下のtemplatesディ レクトリに対してサーチパスが設定される」というものです。 正解は「自動でサーチパスが設定される場所は、settings.pyのINSTALLED_APPSに登録されている各アプリケーション直下のtemplates ディレクトリに対してのみ」です。

嘘を書いてそのままというものあれなので、動作パターンの確認を行いました。

パターン1

  • TEMPLATE_DIRSINSTALLED_APPS

  • 設定無しsample.app1

  • sample.app2

各アプリの下にサーチパスが設定されるtemplatesディレクトリを作成した。

以下、'+'はディレクトリ、'-'はファイルを表すこととする。また、test.htmlはbase.htmlを継承したテンプレートとする。

  +sample
         + app1
               + templates
                          + app1
                          - test.html
               - base.html
         + app2
               + templates
                          + app2
                          - test.html
               - base.html

パターン2

  • TEMPLATE_DIRSINSTALLED_APPS

  • 設定無しsample.app1

  • sample.app2

  +sample
         + app1
               + templates
                          + app1
                          - test.html
                          + app2
                          - test.html
               - base.html
         + app2
               + templates
                          + app2
                          - test.html
               - base.html

パターン3

  • TEMPLATE_DIRSINSTALLED_APPS

  • 設定無しsample.app2

  • sample.app1

  +sample
         + app1
               + templates
                          + app1
                          - test.html
                          + app2
                          - test.html
               - base.html
         + app2
               + templates
                          + app2
                          - test.html
               - base.html

パターン4

  • TEMPLATE_DIRSINSTALLED_APPS

  • $PROJECT_HOME/templatessample.app1

  • sample.app2

  +sample
         + app1
               + templates
                          + app1
                          - test.html
               - base.html
         + app2
               + templates
                          + app2
                          - test.html
               - base.html
         + templates
         - base.html

パターン5

  • TEMPLATE_DIRSINSTALLED_APPS

  • $PROJECT_HOME/templatessample.app1

  • sample.app2

  +sample
         + app1
               + templates
                          + app1
                          - test.html
                          + app2
                          - test.html
               - base.html
         + app2
               + templates
                          + app2
                          - test.html
               - base.html
         + templates
               + app2
               - test.html
         - base.html

パターン6

  • TEMPLATE_DIRSINSTALLED_APPS

  • $PROJECT_HOME/templates2

  • $PROJECT_HOME/templatessample.app1

  • sample.app2

  +sample
         + app1
               + templates
                          + app1
                          - test.html
                          + app2
                          - test.html
               - base.html
         + app2
               + templates
                          + app2
                          - test.html
               - base.html
         + templates
         - base.html
         + templates2
         - base.html

Templateローダの振る舞い

優先度は以下の通りと考えられる。

どのようにテンプレートを格納すべきか

Prev Entry

Next Entry