Django模板查找顺序

nig*_*ler 2 django templates path django-floppyforms

我正在编写一个使用的应用程序django-floppyforms.此外,我的应用程序提供了默认twitter bootstrap皮肤,所以我已经在我的应用程序中自定义了floppyforms模板,使它们成为引导程序.我放入floppyforms/{layouts, rows}/bootstrap了我的应用程序的模板目录.但它不起作用:django不会使用它们.因此,我不想强​​制最终用户将自定义模板放入他的项目中,事实上,我想指出django floppyforms在呈现应用内内容时使用我的本地模板.我只想让我的应用程序独立,没有任何不方便的依赖.

UPDATE

现在我有与django-admintools-bootstrap和类似的麻烦Django 1.5.1.据之前添加admin_toolsINSTALLED_APPS,但没有效果.它也不会收集静电django-admintools-bootstrap.在使用这两个软件包和Django 1.4的其他类似项目中,一切正常.此外,我已经检查了Django 1.5的发行说明,以了解模板查找顺序的更改,但没有发现任何相关信息.

Wto*_*wer 8

更新的答案:

由于Django的1.8,TEMPLATE_DIRS并且TEMPLATE_LOADERS已被弃用,取而代之TEMPLATES.

一个例子TEMPLATES可以是:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            os.path.join(BASE_DIR, 'templates'),
        ],
        'APP_DIRS': True,
        'OPTIONS': {
            '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',
            # ],
            'debug': True,
        },
    },
]
Run Code Online (Sandbox Code Playgroud)

模板查找顺序由以下内容决定:

  • 本质上最重要的地方是loaders选择OPTIONS.如果已定义,则需要APP_DIRS未设置并遵循任何明确的顺序.

  • 如果没有加载器,并且如果有任何DIRS定义,则这些filesystem加载器具有优先级.

  • 如果没有加载器,并且APP_DIRS已定义,则这些优先于第二优先级DIRS.

以上内容未明确记录,但可以通过现有文档轻松扣除,也许可以在一些实验后进行.