2016-09-19 59 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