2017-07-24 50 views
0

由于某种原因,当我尝试使用Jinja2作为模板引擎而不是Django模板引擎时,我的w admin管理界面突然崩溃。我的前端工作得很好,它在app/jinja2中找到了我的模板。这是一个添加了w tail的Django项目。使用Jinja2时的管理员中断

这里是试图访问/管理员的时候,我得到的错误,

TemplateDoesNotExist at /admin/wagtailadmin/home.html 
Request Method: GET 
Request URL: http://127.0.0.1:8000/admin/ 
Django Version: 1.11 
Exception Type: TemplateDoesNotExist 
Exception Value: wagtailadmin/home.html 
Exception Location: /Users/dbroadlick/Desktop/projects/codero2/virtualenv/lib/python3.6/site-packages/django/template/loader.py in get_template, line 25 
Python Executable: /Users/dbroadlick/Desktop/projects/codero2/virtualenv/bin/python 
Python Version: 3.6.1 
Python Path: ['/Users/dbroadlick/Desktop/projects/codero2', 
'/Users/dbroadlick/Desktop/projects/codero2/virtualenv/lib/python36.zip', 
'/Users/dbroadlick/Desktop/projects/codero2/virtualenv/lib/python3.6', 
'/Users/dbroadlick/Desktop/projects/codero2/virtualenv/lib/python3.6/lib-dynload', 
'/Users/dbroadlick/Desktop/projects/codero2/virtualenv/lib/python3.6/site-packages'] 
Server time: Mon, 24 Jul 2017 21:40:59 +0000 

这里是我的模板配置的样子,

TEMPLATES = [ 
{ 
    'BACKEND': 'django.template.backends.jinja2.Jinja2', 
    'APP_DIRS': True, 
    'OPTIONS': { 
     'extensions': [ 
      'wagtail.wagtailcore.jinja2tags.core', 
      'wagtail.wagtailadmin.jinja2tags.userbar', 
      'wagtail.wagtailimages.jinja2tags.images', 
     ], 
     'context_processors': [ 
      'django.template.context_processors.debug', 
      'django.template.context_processors.request', 
      'django.contrib.auth.context_processors.auth', 
      'django.contrib.messages.context_processors.messages', 
     ], 
    }, 
}, 
] 

它还说,它正试图使用jinja2引擎,它不应该是因为w admin管理员使用Django模板进行编程。

回答

2

TEMPLATES设置已Jinja2的配置为唯一可用的模板引擎,所以没有什么触发了“传统” Django的模板引擎行为的鹡鸰管理依赖于(即:看每个应用程序的/template文件夹中的请求模板路径wagtailadmin/home.html)。结果,模板从未找到。您需要包括两个Jinja2的,在你TEMPLATES设置DjangoTemplates配置 - 是这样的:

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     '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', 
      ], 
     }, 
    }, 
    { 
     'BACKEND': 'django.template.backends.jinja2.Jinja2', 
     'APP_DIRS': True, 
     'OPTIONS': { 
      'extensions': [ 
       'wagtail.wagtailcore.jinja2tags.core', 
       'wagtail.wagtailadmin.jinja2tags.userbar', 
       'wagtail.wagtailimages.jinja2tags.images', 
      ], 
      'context_processors': [ 
       'django.template.context_processors.debug', 
       'django.template.context_processors.request', 
       'django.contrib.auth.context_processors.auth', 
       'django.contrib.messages.context_processors.messages', 
      ], 
     }, 
    }, 
] 

请注意,您需要有到位一些约定来告诉Django哪些模板应与引擎渲染 - 用上面的配置,我相信把你的Jinja2模板放入some_app/jinja2/而不是some_app/templates/应该照顾到这一点。

+0

工作就像一个魅力。谢谢你,先生。这应该可以在Wagtail的文档中找到,http://docs.wagtail.io/en/v1.9/advanced_topics/jinja2.html。它非常依赖你的Django知识。 –