2016-09-19 60 views
2

我瞭解,默認情況下,應用程序會查看特定模板名稱的應用程序的模板文件夾。如果將模板放在名爲foo的文件夾中,會發生什麼情況?我怎麼能告訴Django也看看每個應用程序的每個文件夾的foo下?指定模板文件夾以外的其他路徑以放置模板

+0

「來看待每個文件夾的FOO下」,你是什麼意思呢,看看哪些文件夾下的究竟?在設置中,您只需定義包含模板的所有目錄。 – serg

+0

@serg我很抱歉。我的意思是說,查看每個應用程序的文件夾「foo」。默認情況下,django會在每個應用程序的模板文件夾中查找,而我希望它在每個應用程序中查找名爲'foo'的文件夾 –

+0

您有多應用程序和多模板? – Windsooon

回答

1

您可以在Django設置

爲了檢測每一個應用程序在「富」模板目錄中TEMPLATES選項添加目錄列表DIRS,我建議你到INSTALLED_APPS元組分成至少兩個不同的元組

  1. 'PROJECT_APPS'=包含您的應用程序
  2. 'OTHER_APPS'=默認的Django的應用程序的元組+第三方應用
的名稱元組

所以INSTALLED_APPS = PROJECT_APPS + OTHER_APPS

現在包括模板目錄DIRSTEMPLATES

TEMPLATES = [ 
{ 
    'BACKEND': 'django.template.backends.django.DjangoTemplates', 
    'DIRS': [os.path.join(PROJECT_PATH, 'apps', app_name, 'foo') for app_name in PROJECT_APPS], 
    'OPTIONS': { 
     'loaders': [ 
      'django.template.loaders.filesystem.Loader', 
      'django.template.loaders.app_directories.Loader', 
     ], 
     'context_processors': [ 
      "django.template.context_processors.debug", 
      "django.template.context_processors.media", 
      "django.template.context_processors.request", 
      "django.template.context_processors.static", 
     ] 
    } 
}, 
] 

所以現在'django.template.loaders.filesystem.Loader'將考慮所有的目錄中DIRS,默認情況下'django.template.loaders.app_directories.Loader'加載器會在「模板」文件夾每個應用。

編號:Django loader types

+0

我還沒有測試過它。一旦我測試它會回發。謝謝回答 –

+0

@JamesFranco你有沒有機會測試這個? – Termi