2016-11-25 9 views
3

Django 1.6から1.10に古いプロジェクトをアップグレードしました。特定のディレクトリのすべてのtemplatseはロードされなくなりました。Djangoでテンプレートを読み込む順序を指定する方法は?

これらのテンプレートの場所は

/project/templates/userena 

にこれらのテンプレートは、テンプレートをオーバーライドする必要がありますされているが、

/usr/local/bin/python2.7/dist-packages/userena 

でuserenaライブラリに含まれている私は、テンプレートの読み込みのためのDjangoのドキュメントを読んでいるが、それはありません私には全く意味がありません。

は、現在、私のsettings.pyがあり、この

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [ 
         os.path.join(BASE_DIR, 'templates'), 
       ], 
     'APP_DIRS': False, 
     'OPTIONS': { 
      'debug': DEBUG, 
      'context_processors': [ 
       'django.template.context_processors.debug', 
       'django.template.context_processors.request', 
       'django.contrib.auth.context_processors.auth', 
       'django.contrib.messages.context_processors.messages', 
      ], 
      'loaders': [ 
       'django.template.loaders.filesystem.Loader', 
       'django.template.loaders.app_directories.Loader', 
      ], 
     }, 
    }, 
] 

私は/プロジェクト/テンプレート/ userenaからDjangoの負荷テンプレートを持つために私のsettings.pyに変更する必要がありますか?

答えて

2

Djangoは「ローダー」オプションに従ってテンプレートローダーを使用します。ローダーが一致するものを見つけるまで、各ローダーを使用します。 (docs)。

はい、注文は重要です。

+0

私は両方のローダーが正確に何をしているのか分かりません。私は順序を入れ替えて動作するかどうか試してみます。 – david

+0

簡潔に申し訳ありません。最初のローダーは、辞書の ''DIRS''キーで指定されたすべてのディレクトリを検索しています。あなたのプロジェクトにインストールしたすべてのアプリケーションで、2番目のアプリケーションです。あなたの特定のケースでは、アプリとローカルのテンプレートディレクトリの両方に同じ名前が付いているので、実際は少し難解です。私は確信していませんが、ファイルシステムローダーが 'project/templates/userena'で探しているので、あなたの現在の注文でうまくいくはずです。テンプレートレンダリングで投稿を更新することはできますか? – martinarroyo

+0

私はすべてのテンプレート設定を同じにしましたが、私は自分のINSTALLED_APPSの順番を入れ替えました。今度はテンプレートが正しく読み込まれます。 – david

関連する問題