Django 1.8与Jinja2:Contrib app管理员无法正常工作

Gri*_*ngo 6 django django-templates jinja2

我升级到全新安装的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',
-            ],
-        },
     },
 ]
Run Code Online (Sandbox Code Playgroud)

有谁知道:

  1. 如何让contrib app管理员继续使用DjangoTemplates,同时让我自己的应用程序使用Jinja2,或
  2. 如果有另一个管理员应用程序与支持Jinja2的默认管理员应用程序一样好,或者
  3. 如果还有其他我忽略或应该注意的事情?

感谢您的时间 :)

Ala*_*air 8

管理员应用程序没有附带Jinja2模板.您需要将项目配置为使用Django和Jinja2模板.

在Django的模板的文档具有下面的例子.

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',
        ],
    },
]
Run Code Online (Sandbox Code Playgroud)

  • 我主要遵循你的建议而且效果很好.我做的不同之处在于我把Jinja2放在DjangoTemplates之前而不是之后因为在正常操作中,它是模板引擎,通常是正确的,而不是像你的例子那样提供DIRS,我把它们保留为默认值(空列表) )并包括一些其他默认值. (4认同)