Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django模板查找顺序_Django_Templates_Path_Django Floppyforms - Fatal编程技术网

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,
        },
    },
]