Auf der Medium Corporation-Ressource teilt ein Benutzer namens Samu seine Erfahrungen mit Jinja2 mit.
Ihm zufolge hat er zuvor Jinja2 in seinen mit Flask erstellten Projekten verwendet. Aber dann habe ich mich entschieden, Jinja2 mit Django für potenzielle Leistungssteigerungen (10-20x schneller im Vergleich zu Django-Vorlagen) und die Interaktion mit Nunjucks zu verwenden.
Samu teilt seine Erfahrungen mit Menschen, die bereits mit diesen Technologien vertraut sind, und sein Artikel soll die Schritte aufzeigen und ein wenig vereinfachen.
Wenn Sie gerade erst mit Django beginnen, empfiehlt er, mit einem großartigen Tutorial
unter diesem Link
zu beginnen. Sie können auch einige einfache Jinja2-Anweisungen von Django
hier
sehen.
Also lasst uns anfangen.
Zuerst Jinja2 installieren und konfigurieren
pip install Jinja2
und vergessen Sie nicht, es der need.txt-Datei hinzuzufügen. Fügen Sie dann die folgenden Template-Engine-Einstellungen zur Variable TEMPLATES in settings.py hinzu
{ ‘BACKEND’: ‘django.template.backends.jinja2.Jinja2’, ‘DIRS’: [], ‘APP_DIRS’: True, ‘OPTIONS’: { ‘environment’: ‘your-app.jinja2.environment’ }, }
Alle Vorlageneinstellungen sehen also in etwa so aus:
TEMPLATES = [ { ‘BACKEND’: ‘django.template.backends.jinja2.Jinja2’, ‘DIRS’: [], ‘APP_DIRS’: True, ‘OPTIONS’: { ‘environment’: ‘your-app.jinja2.environment’ }, }, { ‘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’, ], }, }, ]
Vergessen Sie nicht, auch die Umgebungsvariable Jinja2-Einstellungen auf den richtigen App-Namen zu ändern (ändern Sie „your-app“ in den Namen Ihres App-Ordners).
Die Optionsumgebung ermöglicht es uns, bestimmte Funktionen in Vorlagen zu verwenden, die weiter angepasst werden. Erstellen Sie eine jinja2.py-Datei in Ihrem Anwendungsordner (wie die settings.py-Datei) und fügen Sie Folgendes hinzu:
from django.contrib.staticfiles.storage import staticfiles_storage from django.urls import reverse from jinja2 import Environment def environment(**options): env = Environment(**options) env.globals.update({ ‘static’: staticfiles_storage.url, ‘url’: reverse, }) return env
Dadurch können wir Django-Template-Tags wie {% url 'index' %} oder {% static 'path / to / static / file.js' %} in unseren Jinja2-Templates verwenden. Wie Sie sehen können, verwenden diese Template-Tags die eigentliche Funktionalität von Django. Wenn Sie der Jinja2-Methode zum Aufrufen von Funktionen in einer Vorlage folgen, können Sie sie wie folgt verwenden:
 Django:
{% url ‘index’ variable %}
was in Jinja2 äquivalent ist:
{{url(‘index’, args=[variable])}}
Und für benannte Variablen können Sie Folgendes verwenden:
{{url('index', kwargs={'variable_key':variable}}}
 Django:
{% static ‘path’ %}
was äquivalent ist
{{ static(‘path’)}}
Wie Sie wahrscheinlich bereits bemerkt haben, können Sie der Jinja2-Umgebung grundsätzlich jede Funktionalität hinzufügen, indem Sie sie zur späteren Verwendung in Vorlagen zur Datei jinja2.py hinzufügen.
Endgültige Installationsordner
Sobald Sie Ihre Einstellungen richtig vorgenommen haben, können Sie später einfach einen Jinja2-Ordner erstellen, wo immer Sie möchten, dass ein Vorlagenordner erstellt wird. Es sollte automatisch funktionieren, da Django ein ziemlich gutes Framework ist. Wenn Sie sowohl Django- als auch Jinja2-Vorlagen haben, können Sie beide flexibel verwenden. Beispielsweise haben Sie möglicherweise ein Django-Admin-Panel und verschiedene Plugins, mit denen Sie arbeiten können und die Django-Vorlagen verwenden. Lesen Sie unbedingt die Jinja2-Dokumentation, um mehr zu erfahren.
Nachfolgend finden Sie ein Beispiel dafür, wie eine Anwendungsordnerstruktur für ein Projekt aussehen könnte:
У МЕНЯ ОШИБКА
Выглядит так, что текущая версия jinja2 несовместима с с той версией Django, которую вы используете. По ходу разработчики Jinja2 так до сих пор не обновились.
Эта строчка from django.core.urlresolvers import reverse соответствует старым версия джанго, до версии 2 точно, как обстоит дело с более поздними версиями точно не помню, но на данный момент в последних вторых и третьих версиях джанго используется такой импорт from django.urls import reverse .
В вашем случае есть следующие выходы:
Спасибо, всё заработало!
Пожалуйста, а что конкретно сделали? Откатились?
Да,откатился . Неподскажите где найти документацию jinja2 на русском?
К сожалению нет, не подскажу. У меня был интерес к этому шаблонизатору, но так получилось, что мне пришлось бы переписывать очень большую часть проекта, чтобы его внедрить, поэтому я отказался до лучших времён, поскольку трудозатраты не окупились бы на данный момент.
Следовательно я дальше изучения основ не пошёл, поэтому и на русскоязычную документацию не имел возможности натолкнуться.
Но скорее всего полной русскоязычной документации вовсе нет, максимум отдельные статьи на разных ресурсах.