2017-07-24 44 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知識。 –