2015-04-02 15 views
6

Ho eseguito l'aggiornamento a una nuova installazione di Django 1.8 e ho iniziato a utilizzare Jinja2 perché diceva che ora era supportato e Jinja2 ha alcune funzionalità che potrei usare nel mio progetto.Django 1.8 con Jinja2: app di contributo Admin non funzionante

Dopo aver completato l'adattamento dei modelli per la mia app a Jinja2 e sfruttando le nuove funzionalità ora disponibili, ho scoperto che l'app contrib non ha più funzionato.

"TemplateDoesNotExist a/admin/login /"

Così si scopre che contrib app Amministratore soltanto ha fatto per i modelli DjangoTemplates e non per Jinja2. Ho fatto la cosa più ingenua e ho creato un link simbolico nello templates da templates a jinja2 ma i modelli utilizzavano specifiche di DjangoTemplates e quindi Jinja2 non li accettava. Ho rimosso il collegamento simbolico.

Il modo in cui ho passa ad Jinja2 è facendo la seguente modifica nel mio progetto 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', 
-   ], 
-  }, 
    }, 
] 

Qualcuno sa di uno:

  1. Come lasciare che l'amministrazione contrib app mantenere utilizzando DjangoTemplates mentre la mia app utilizza Jinja2 o
  2. Se esiste un'altra app di amministrazione valida come quella predefinita che supporta Jinja2 o
  3. Se c'è qualcos'altro che ho trascurato o dovrebbe essere a conoscenza?

Grazie per il vostro tempo :)

risposta

6

L'applicazione di amministrazione non viene fornito con i modelli Jinja2. Devi configurare il tuo progetto per utilizzare i modelli Django e Jinja2.

Il Django template docs ha il seguente esempio.

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

Ho seguito principalmente il tuo suggerimento e ha funzionato bene. La cosa che ho fatto è stata che ho messo Jinja2 prima di DjangoTemplates invece che dopo il normale funzionamento, è il motore di template che sarà più spesso corretto e inoltre, invece di fornire DIRS come nell'esempio, li ho lasciati ai loro valori predefiniti (liste vuote) e includeva alcune altre impostazioni predefinite. –