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 - Fatal编程技术网

无法从第三方应用覆盖django模板

无法从第三方应用覆盖django模板,django,templates,Django,Templates,我正在尝试覆盖的基本论坛模板 我已将board_base.html内容从复制到/app/forum/templates/machina/board_base.html “我的设置”文件包含一个模板部分,如: TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [ os.path.join(BASE_DIR, 'te

我正在尝试覆盖的基本论坛模板

我已将
board_base.html
内容从复制到
/app/forum/templates/machina/board_base.html

“我的设置”文件包含一个模板部分,如:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            os.path.join(BASE_DIR, 'templates'),
            MACHINA_MAIN_TEMPLATE_DIR,
        ],
#snip
Django肯定在查看该目录:如果我设置了一个指向不存在的模板文件的不同视图,那么在生成的错误页面上,Django报告尝试的第一个路径是:

/app/forum/templates/nothing.html (Source does not exist)
我错过了什么?为什么我不能覆盖该模板


编辑:

因此,我的
DIRS
现在看起来像:

'DIRS': [
    MACHINA_MAIN_TEMPLATE_DIR,
],
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'forum_templates',
    'core',

    # Machina related apps:
    'mptt',
    'haystack',
    'widget_tweaks',
] + get_machina_apps()
我有一个单独的应用程序,
forum\u templates
,它有自己的模板目录<代码>已安装的应用程序看起来像:

'DIRS': [
    MACHINA_MAIN_TEMPLATE_DIR,
],
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'forum_templates',
    'core',

    # Machina related apps:
    'mptt',
    'haystack',
    'widget_tweaks',
] + get_machina_apps()
如果我从
DIRS
中注释掉
MACHINA\u MAIN\u TEMPLATE\u DIR
,我会得到预期的
TemplateDoesNotExist
错误,并列出以下路径:

/usr/local/lib/python3.6/site-packages/django/contrib/admin/templates/partials/breadcrumb.html
/usr/local/lib/python3.6/site-packages/django/contrib/auth/templates/partials/breadcrumb.html
/app/forum/forum_templates/templates/partials/breadcrumb.html
/app/forum/core/templates/partials/breadcrumb.html
/usr/local/lib/python3.6/site-packages/mptt/templates/partials/breadcrumb.html
/usr/local/lib/python3.6/site-packages/haystack/templates/partials/breadcrumb.html
/usr/local/lib/python3.6/site-packages/machina/templates/partials/breadcrumb.html
因此,我从github复制了相关文件,并将其保存到
/app/forum/forum_templates/templates/partials/breadcrumb.html
;重新加载时,错误会移动到下一个模板文件

如果我随后将
MACHINA\u MAIN\u TEMPLATE\u DIR
添加回
DIRS
。。它再次开始从machina加载所有默认模板,忽略my
forum\u templates
app中的覆盖

发生了什么事(

这对我很有用:

from machina import MACHINA_MAIN_TEMPLATE_DIR

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': (
            [os.path.join(BASE_DIR, 'templates')],
            MACHINA_MAIN_TEMPLATE_DIR,
            ),
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                .... 
            ],
        },
    },
]
现在转到基本目录
/templates
并将原始Machina模板移动到此新位置。注意目录级别,您可能需要进行一些试验。删除原始Machina模板目录,以便强制其查找新文件。

可能有用,