无法从第三方应用覆盖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加载所有默认模板,忽略myforum\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模板目录,以便强制其查找新文件。可能有用,