指定模板文件夹以外的路径以放置模板

时间:2016-09-19 02:41:25

标签: django django-templates

据我所知,默认情况下,应用会查看应用的模板文件夹中的特定模板名称。如果我将模板放在名为foo的文件夹中会发生什么?我怎么能告诉django还要查看每个应用程序的每个文件夹的foo?

1 个答案:

答案 0 :(得分:1)

您可以在django设置的DIRS选项中将目录列表添加到TEMPLATES

要检测每个应用程序下的'foo'模板目录,我建议您将INSTALLED_APPS元组分成至少两个不同的元组

  1. 'PROJECT_APPS'=包含应用名称的元组
  2. 'OTHER_APPS'=默认django应用+第三方应用
  3. 的元组

    所以INSTALLED_APPS = PROJECT_APPS + OTHER_APPS

    现在将模板目录包含在DIRS

    中的TEMPLATES
    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'加载程序会在每个应用中查找“templates”文件夹。

    参考:Django loader types