2012-04-10 13 views

答えて

1

テンプレートローダーは、settings.TEMPLATE_LOADERSで定義した順序で適用されます。あなたはfilesystemローダーAFTER app_directoriesローダーを実行しているし、あなたのテンプレートがfilesystemローダーに配置されている場合

は、例えば、app_directoriesローダが使用されることはありません。

app_directoriesローダーについて具体的に言えば、INSTALLED_APPSで定義されている順番でアプリテンプレートフォルダを検索します。

テンプレートの名前が重複していて、意図しない(上書きの階層ではない)場合は、各テンプレートフォルダの先頭にアプリ名を付ける方がよい場合があります。

# this is standard 
myapp/templates/myapp/index.html 
myapp2/templates/myapp2/index.html 
1

意味が明確ではありません。テンプレートを指定するときは、適切に名前を付けて正確に指定する必要があります。あなたがテンプレートのリストから「ベスト」テンプレートを選ぶ管理者のようなものを意味するならば、それは単純なアルゴリズムを使って最もマッチしたものを見つけます。 loader.select_templateにテンプレートのリストを渡すだけで、これが実行され、有効な最初のテンプレートが使用されます。

+0

テンプレートが一度読み込まれ、起動時にキャッシュされていれば不思議で、Djangoが名前を共有する複数のテンプレートを見つけた場合のDjangoの動作に影響します。 –

関連する問題