Любые недостатки или gotchas для использования шаблонов Jinja2 в Django?



Answers

Я использую Jinja2 в некоторых своих проектах и ​​люблю дополнительную выразительность, которую он мне дает. Я могу разделить логику представления и логику приложения, но мне не нужно наклоняться назад, чтобы вызвать функцию / метод, который я специально разработал для своего уровня представления.

В дополнение к тому, что уже было указано другими плакатами, вот некоторые вещи, которые я нашел:

  • Приложение Admin тесно связано с шаблонами Django
  • Представленные по умолчанию представления и декораторы, которые поставляются с приложением Auth (и в другом месте), связаны с шаблонами Django, поэтому вам придется дублировать усилия, если вы хотите использовать шаблоны Jinja2 для входа / выхода из системы / etc

Поведенчески, шаблоны Django будут выходить из своего вывода по умолчанию, тогда как Jinja2 не будет. Я думаю, что любой подход имеет свои достоинства, но вы должны помнить об этом, если вы переключаетесь между ними.

Question

Прочитав документацию Jinja2, я заинтересован в ее использовании в будущих проектах Django. Тем не менее, мне интересно, если кто-нибудь столкнулся с недостатками или gotchas при использовании Jinja2 шаблонов с Django? Если да, то как вы обходились вокруг?

Я бы тоже не просил услышать о положительном опыте, просто чтобы получить хорошее поперечное сечение лучшего и худшего из Jinja2.




Для меня самая неприятная вещь от использования Jinja2 в Django заключается в том, что вы не сможете использовать некоторые приложения Django, когда они приходят со своими шаблонами или тегами шаблонов (например, django-uni-forms).

Это может разочаровать несколько раз, когда вы найдете отличное приложение, которое решает ваши проблемы, но вы не можете использовать его, потому что оно несовместимо с Jinja2.

Кстати, Armin Ronacher (автор Jinja2), похоже, будет работать над новым бэкэндом с шаблонами, который будет сидеть за Jinja2 и Django, заменяя существующую инфраструктуру, но сохраняя обратную совместимость. https://www.djangoproject.com/weblog/2011/apr/25/gsoc/




В апреле 2015 года Django 1.8 поддерживает создание шаблонов с несколькими двигателями в рамках одного и того же проекта и имеет встроенную поддержку Jinja2 . Таким образом, это не должно быть решением «все или ничего».

(Хотя это прямо не отвечает на вопрос, так как это было раньше, я думал, что это заслуживает большего, чем просто комментарий).




Расширение Jinja2 намного сложнее, чем система шаблонов Django (я говорю о templatetags). Хотя большинство функций тегов включения можно достичь с помощью макросов в Jinja (они даже кажутся более подходящими), писать бит более сложные теги в Jinja очень сложно (см. Документы для себя).

Помимо этого единственным препятствием являются привычки на основе Django ...;)




Links