2015-04-02 41 views
6

我升級到Django 1.8的全新安裝,並開始使用Jinja2,因爲它表示它現在被支持,Jinja2有一些功能可以在我的項目中使用。Django 1.8與Jinja2:Contrib應用程序管理員不工作

完成了將我的應用程序的模板調整爲Jinja2並利用現有新功能的優勢後,我發現contrib應用程序管理員不再有效。

「TemplateDoesNotExist AT /管理/登入/」

所以事實證明了contrib應用管理不僅具有模板DjangoTemplates而不是做的Jinja2。我首先做了一件天真的事,並在[...]/site-packages/django/contrib/admin中創建了一個符號鏈接,從templatesjinja2,但模板使用的是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', 
-   ], 
-  }, 
    }, 
] 

有誰知道任:

  1. 如何讓的contrib應用程序管理員保留使用DjangoTemplates,同時讓我自己的應用程序使用Jinja2,或
  2. 如果有另一個管理應用程序與支持Jinja2的默認應用程序一樣好,或者
  3. 如果有其他事情我忽略了或者應該知道?

感謝您的時間:)

回答

6

管理應用不附帶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', 
     ], 
    }, 
] 
+4

我大部分時間都跟着你的建議,而且效果很好。我做的不同的是,我把Jinja2放在DjangoTemplates之前,而不是在正常運行之後,它是模板引擎,它通常是正確的,而不是像在你的例子中那樣提供DIRS,我把它們留在默認值(空列表)幷包含一些其他默認值。 – 2015-04-02 22:28:14

相關問題