2016-11-25 27 views
3

所以我已經將舊項目從Django 1.6升級到1.10,現在所有來自特定目錄的模板都不再加載。這些模板如何在Django中指定模板加載的順序?

位置在

/project/templates/userena 

這些模板應該是壓倒一切的模板包含在

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

我已經閱讀了模板載入Django文檔,但它確實userena庫根本沒有意義。

目前我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', 
      ], 
     }, 
    }, 
] 

什麼我需要在我的settings.py改變纔能有Django的負載從模板/項目/模板/ userena?

回答

2

Django根據'loaders'選項依次使用模板加載器。它使用每個加載器,直到加載器找到匹配。 (docs)。

所以,是的,訂購很重要。

+0

嗯,我甚至都不知道我使用的兩個裝載機都完全是這樣,我想我會試着切換順序並查看它是否有效。 – david

+0

簡短對不起。第一個加載器正在搜索字典的「DIRS」鍵中指定的所有目錄。第二個,你已經安裝在你的項目中的所有應用程序中。在你的特定情況下,它實際上有點棘手,因爲你的應用程序和本地模板目錄都有相同的名稱。我不確定,但它應該適用於您當前的排序,因爲文件系統加載器是在'project/templates/userena'中尋找的。你可以用模板渲染來更新你的文章嗎? – martinarroyo

+0

我離開了所有的模板設置,但我切換了我的INSTALLED_APPS的順序,現在模板加載正確。 – david