2013-07-29 12 views
9

外部アプリのテンプレートをオーバーライドしたい(allauth、サイトパッケージにインストールされている)。残念ながら、私が読んだアドバイスは一生働いていません 私はsettings.pyに以下を追加:Djangoで外部アプリのテンプレートをオーバーライド

PROJECT_ROOT = os.path.normpath(os.path.dirname(os.path.abspath(__file__))) 
TEMPLATE_DIRS = (os.path.join(PROJECT_ROOT, 'templates', 'allauth')) 

my_project_dir/templates/allauthにすべてのテンプレート(this content)をコピーしました。しかし、サーバーを再起動してページをリロードすると、サイトパッケージの元のallauthアプリケーションからのみレンダリングされたテンプレートが取得されます。カスタムテンプレートはマイニングされません。何かヒント?

答えて

7

DEBUGTrueに設定されています。存在しなかったテンプレートをレンダリングして、Djangoがテンプレートを読み込もうとした場所の一覧を見ることです(これはエラーページの出力に含まれます)。

レンダリングしようとしているテンプレートは何ですか? allauth/foo.htmlをレンダリングしようとしている場合は、my_project_dir/templates/allauthではなくTEMPLATE_DIRSの設定にmy_project_dir/templatesを追加することをおすすめします。

27

INSTALLED_APPSの順番を確認すると、最初にマッチしたテンプレートがレンダリングされます。

これを念頭に置いて、テンプレートをカスタムアプリケーションの同じパスに追加することができます。