我有一个包含2个应用的项目
project/
blog/
templates/
index.html
polls/
templates/
index.html
project/
templates/
base.html
index.html
现在我希望这两个应用扩展项目base.html
。这是要走的路吗?怎么可能,有没有更好的解决方案?
已经有一个问题正在处理这个问题,但如果你不使用拆分目录,那么它只值得一提: Django project base template
tl; dr:我想使用拆分目录,想知道如何从多个应用程序扩展基本模板而不将其复制到每个应用程序
答案 0 :(得分:25)
在当前的Django(1.10)TEMPLATE_DIRS is deprecated中,所以:
templates
目录,在 settings.py 中找到TEMPLATES - > DIRS并添加如下:
TEMPLATES = [
{
...
'DIRS': [(os.path.join(BASE_DIR, 'templates')),],
...
}
将 base.html 添加到该目录。
{% extends 'base.html' %}
答案 1 :(得分:6)
templates
目录,并将其添加到TEMPLATE_DIRS
设置。{% extends 'base.html' %}
答案 2 :(得分:1)
对于1.8以上的Django版本,upgrade doc表示将vanilla设置(对于像我这样的大多数非高级django tangoers)添加到您的settings.py中:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [(os.path.join(BASE_DIR, 'my_Templates_Directory')),],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
# Insert your TEMPLATE_CONTEXT_PROCESSORS here or use this
# list if you haven't customized them:
'django.contrib.auth.context_processors.auth',
'django.template.context_processors.debug',
'django.template.context_processors.i18n',
'django.template.context_processors.media',
'django.template.context_processors.static',
'django.template.context_processors.tz',
'django.contrib.messages.context_processors.messages',
],
},
},
]
需要BACKEND和OPTIONS,否则我会遇到与“无效后退”相关的错误。和' django.contrib.auth.context_processors.auth'必须在TEMPLATES'。