[#] Руководство по созданию расширений для Jinja2
habrabot(difrex,1) — All
2017-10-19 19:00:04


![][1][Jinja2][2] — Python-библиотека для рендеринга шаблонов, являющаяся де-факто стандартом при написании веб-приложений на Flask и довольно популярной альтернативой встроенной системе шаблонов Django. Хотя и будучи сильно привязана к языку, Jinja2 позиционирует себя как инструмент для дизайнеров и верстальщиков, упрощающий вёрстку и отделяющий её от разработки, и пытающийся по мере возможностей изолировать не-разработчиков от Python. Вёрстка, впрочем, не единственное возможное её применение; например, в своей работе я использую шаблоны Jinja2 для генерации SQL-запросов.

Jinja2 [расширяема][3], и многие возможности (например, интернационализация и управление циклами) реализованы именно как расширения. Однако, документация по написанию расширений, как мне кажется, несколько неполна; от примера несложного (но тщательно прокомментированного) расширения она перескакивает сразу к описанию API _некоторых_ классов Jinja2, которое довольно трудно читать подряд. В этой статье я попытаюсь исправить это упущение и создать в голове читателя полную и ясную картину того, как работает Jinja2, как устроены её расширения и как с помощью расширений модифицировать разные этапы обработки шаблонов.
[Читать дальше →][4]

[1]: https://habrastorage.org/storage2/e08/d18/3c4/e08d183c4ba545cb95fc71ac220b7083.png
[2]: http://jinja.pocoo.org/
[3]: http://jinja.pocoo.org/docs/2.9/extensions/#jinja-extensions
[4]: https://habrahabr.ru/post/340254/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut