[PYTHON] Ab Django 1.8 können Sie Jinja2 als Template-Engine #djangoja auswählen

Ich habe diesen Artikel geschrieben, als ich an [Tokyo Django Meetup # 3] teilgenommen habe (http://django.connpass.com/event/14219/).

In Django 1.8 können Sie Jinja2 als Vorlagen-Engine auswählen. Um es einzustellen, schreiben Sie einfach "TEMPLATES" in die Einstellungsdatei wie folgt.

settings.py


TEMPLATES = [
    {
        #↓ Schreiben Sie den Standardwert neu
        'BACKEND': 'django.template.backends.jinja2.Jinja2',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            # context_Verwenden Sie es nicht, da es bei Prozessoren nicht funktioniert(Siehe unten)
            #'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 ist nicht in Django enthalten. Installieren Sie Jinja2 daher separat mit pip install Jinja2.

In "settings.py", das von "django-admin start project" generiert wurde, befindet sich "context_processors" in "OPTIONS". Wenn Sie jedoch Jinja2 mit dieser Option verwenden, tritt der folgende Fehler auf. [^ 1]

Exception Type: TypeError
Exception Value: 
__init__() got an unexpected keyword argument 'context_processors'

Sie können das Element "Umgebung" anstelle von "Kontextprozessoren" verwenden. Schreiben Sie app / jinja2.py mit den folgenden Inhalten:

jinja2.py


from __future__ import absolute_import  # Python 2 only

from jinja2 import Environment
from datetime import datetime


def environment(**options):
    env = Environment(**options)
    #Das ist Kontext_Anstelle von Prozessoren
    env.globals.update({
        'greeting': u"HELLO!",
        'imananji': datetime.now, #Übergeben Sie ein aufrufbares Objekt, wenn Sie das Ergebnis bei jedem Laden der Seite erhalten möchten
    })
    return env

Wenn Sie "Umgebung" wie folgt schreiben, können Sie "{{Begrüßung}}", "{{imananji ()}}" in der Vorlage verwenden.

settings.py


TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.jinja2.Jinja2',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            # 'app'Teil hängt von der Konfiguration der Anwendung ab
            'environment': 'app.jinja2.environment',
        },
    },
]

[^ 1]: ... Beispielcode in der offiziellen Dokumentation beiläufig "context_processors" `Wurde gelöscht: weinen:

Recommended Posts

Ab Django 1.8 können Sie Jinja2 als Template-Engine #djangoja auswählen
Das Ablesen des analogen Messgeräts kann am Beispiel MNIST erfolgen.
Das Ablesen des analogen Messgeräts kann am Beispiel MNIST erfolgen.
Jinja2 | Python-Vorlagen-Engine
Webanwendung mit Python3.3.1 + Flasche (1) - Ändern Sie die Vorlagen-Engine in jinja2
Können Sie diese Datei löschen?
Ich habe Jinja2 beim Lesen des Dokuments verglichen, um es mit Django zu verwenden