Django1.0 でのテンプレートファイルの扱いが気持ち悪い

テンプレートファイルをアプリ毎に同名で配置した場合、テンプレートローダのサーチ順により、先に見つけた方が採用されてしまう。


これだと、テンプレートファイル名は、プロジェクト内でグローバルな位置づけになってしまい、アプリ毎の独立性を保つ事が出来ない。。。
自分で作っている範疇だと、ファイル名を分けて作ればいいんだろうけど、既存アプリや admin サイトをはじめとしたアドオン系を導入する場合に、カブってしまう可能性がある。


また、1プロジェクト内で PC サイトと携帯サイト作ったりする場合に、ファイル名を分けないといけなくなる。。。
 (例)
 PC: index.html
 携帯: index_m.html


これだと HTML のモック作って確認したり、デザイナと分業したりする場合に、とっても面倒だと思うんですが・・・。


テンプレートローダを自作してもいいんですけど、
ここら辺どうにかキレイに実装するやり方をご存知の方、ご教示下さいm(_ _)m
(実は既存で実装されてて、xxx っていう設定すれば行ける!とか?)




具体的には、以下のように、テンプレートローダをアプリディレクトリ配下の templates サブディレクトリだけを見るように設定(※1)した場合、setting.py の INSTALLED_APPS 登録順に templates サブディレクトリが検索されるため、下記例で行くと、app_02 のテンプレート (index.html) は利用されない。


※1. "django.template.loaders.app_directories.load_template_source" のみ有効にする




(例)<ディレクトリ構成>


 + app_01
 |  + tempaltes
 |      + index.html  <- app_01 用のテンプレート
 + app_02
 |  + tempaltes
        + index.html  <- app_02 用のテンプレート





[settings.py]

  :
#テンプレートローダ
TEMPLATE_LOADERS = (
#    'django.template.loaders.filesystem.load_template_source',
    'django.template.loaders.app_directories.load_template_source',
)
  :
#テンプレートを探す場所の登録
TEMPLATE_DIRS = ()
  :
#アプリケーションの登録
INSTALLED_APPS = (
  'project_root.app_01',
  'project_root.app_02',
)
  :




参考になったら、ポチッとお願いします。m(_ _)m
↓↓↓
人気ブログランキングへ