Django模板查找顺序
我正在编写一个应用程序,它使用Django模板查找顺序,django,templates,path,django-floppyforms,Django,Templates,Path,Django Floppyforms,我正在编写一个应用程序,它使用django-floppyforms。另外,我的应用程序提供了默认的twitter引导skin,因此我在我的应用程序中定制了floppyforms模板,使它们类似于引导。我将floppyforms/{layouts,rows}/bootstrap放入我的应用程序的templates目录中。但它不起作用:django不会使用它们。所以,我不想强制最终用户将自定义模板放入他的项目中,事实上,我想让django在呈现应用程序内内容时使用我的本地floppyforms模板。
django-floppyforms
。另外,我的应用程序提供了默认的twitter引导
skin,因此我在我的应用程序中定制了floppyforms模板,使它们类似于引导。我将floppyforms/{layouts,rows}/bootstrap
放入我的应用程序的templates目录中。但它不起作用:django不会使用它们。所以,我不想强制最终用户将自定义模板放入他的项目中,事实上,我想让django在呈现应用程序内内容时使用我的本地floppyforms
模板。我只想让我的应用程序独立,没有任何不愉快的依赖
更新
现在我在和
Django 1.5.1
上遇到了类似的问题。它是在INSTALLED\u APPS
中的admin\u tools
之前添加的,但没有效果。此外,它不会收集django admintools引导程序的静态数据。在使用这两个包和Django 1.4的其他类似项目中,所有这些都可以正常工作。此外,我还检查了Django 1.5的发行说明,查看了模板查找顺序的更改,但没有发现任何相关内容。如果它们不在应用程序模板目录中,请在“设置”中添加模板目录的绝对路径。
这些目录将按顺序搜索,因此请将它们添加到前面
如果它们在apps目录中,您可能希望将django.template.loaders.app\u directories.Loader'
放在template\u loaders
设置中的任何人之前
另外,请检查在指定模板时如何使用模板名称。您应该使用as“floppyforms/layouts/bootstrap/template1.html”
更多信息,请访问更新的答案:
从Django 1.8开始,和被弃用并替换为
一个例子可以是:
模板查找顺序由以下内容决定:
- 本质上,最重要的地方是选择。如果定义了此项,则需要未设置该项,并遵循任何显式顺序
- 如果没有加载程序,并且定义了加载程序,则这些加载程序的优先级为
加载程序文件系统
- 如果未定义装载机和,则这些装载机具有第二优先级
上面的内容没有明确的文档记录,但是可以通过现有文档很容易地推断出来,可能是在一些实验之后。floppyforms模板位于app template目录中,因此我将
'django.template.loaders.app\u directories.Loader'
移到template\u loaders
的顶部。完整路径类似于“/templates/floppyforms/layouts/bootstrap.html”。它仍然不起作用。另外,如果我将floppyforms模板放入项目的模板路径中,loader会找到它们。@lilo.panic,您使用什么路径来指定模板?我只想指出,我没有为floppyforms指定任何路径:当我在视图中创建floppyforms.Form
的实例时,floppyforms
使用自定义模板来呈现它。当我呈现自己的视图时,我使用path,即/themes/default/index.html
我遇到了一个类似的问题,我将模板放在模板中的嵌套文件夹中,Django无法找到它们,除非文件夹名称在模板名称字符串中。
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,
},
},
]