我升级到全新安装的Django 1.8,并开始使用Jinja2,因为它说它现在得到了支持,Jinja2有一些我可以在我的项目中使用的功能。
在完成将我的应用程序的模板调整到Jinja2并利用现有的新功能后,我发现contrib app Admin不再有效。
“/ admin / login /”中的“TemplateDoesNotExist”
所以事实证明,contrib app Admin只为DjangoTemplates而不是Jinja2制作了模板。我首先完成了天真的事情并在[...]/site-packages/django/contrib/admin
中从templates
到jinja2
制作了一个符号链接,但模板使用的是DjangoTemplates细节,因此Jinja2不会接受它们。我删除了符号链接。
我切换到Jinja2的方法是在我的项目settings.py
中进行以下更改:
TEMPLATES = [
{
- 'BACKEND': 'django.template.backends.django.DjangoTemplates',
+ 'BACKEND': 'django.template.backends.jinja2.Jinja2',
'DIRS': [],
'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',
- ],
- },
},
]
有没有人知道:
感谢您的时间:)
答案 0 :(得分:7)
管理员应用程序没有附带Jinja2模板。您需要将项目配置为使用Django和Jinja2模板。
Django template docs有以下示例。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
'/home/html/example.com',
'/home/html/default',
],
},
{
'BACKEND': 'django.template.backends.jinja2.Jinja2',
'DIRS': [
'/home/html/jinja2',
],
},
]
答案 1 :(得分:0)
理想的解决方案是使默认模板系统优先于Jinja系统。唯一的区别是指定的DIRS
需要不同。如果您只关心管理员,则此过程相当简单。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [], # This is particularly important as it will not look into the default template directory
},
{
'BACKEND': 'django.template.backends.jinja2.Jinja2',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
},
]
请记住,目录结构一定不允许默认模板系统访问您的主页。