Jinja — рушій шаблонів для мови програмування Python створений Арміном Ронакером з ліцензією BSD. На відміну від схожого рушія шаблонів у Django, використовує вирази у стилі мови Python та використовує пісочницю для шаблонів. Завдяки тому, що шаблони Jinja засновані на текстовому форматі, тому створення розмітки документу стає подібним до написання сирцевого коду.

Jinja
Тип бібліотека
Шаблонізатор
бібліотека Pythond і template languaged
Розробник Армін Ронакер
Мова програмування Python[1]
Ліцензія модифікована ліцензія BSDd[2][3]
Репозиторій github.com/pallets/jinja
Вебсайт palletsprojects.com/p/jinja/

Шаблони рушія Jinja надають можливості налаштування тегів,[4] фільтрів, тестів та глобальних параметрів.[5] Також, на відміну від рушія Django, Jinja дозволяє розробнику шаблонів викликати функції з об'єктами у якості аргументів. Jinja є основним рушієм шаблонів у Flask.[6]

Властивості ред.

Основні властивості Jinja:[7]

  • виконання у пісочниці
  • потужна автоматизація перевірки HTML[en] для запобігання атак міжсайтового скриптингу (XSS)
  • спадковість шаблонів
  • виконується компіляція в оптимальний python код на момент використання
  • опціонально доступна дострокова компіляція шаблонів
  • легке зневадження. Номери рядків винятків безпосередньо вказують на правильний рядок шаблону.
  • синтаксис можна налаштувати

Jinja, подібно Smarty, має легку у використанні систему фільтрів подібно до конвеєра у Unix.

Приклад ред.

Тут наведено невеличкий приклад файлу шаблону 'example.html.jinja'[8]

<!DOCTYPE html>
<html>
  <head>
    <title>{{ variable|escape }}</title>
  </head>
  <body>
  {%- for item in item_list %}
    {{ item }}{% if not loop.last %},{% endif %}
  {%- endfor %}
  </body>
</html>

і код шаблону:

from jinja2 import Template
with open('example.html.jinja') as f:
    tmpl = Template(f.read())
print tmpl.render(
    variable = 'Value with <unsafe> data',
    item_list = [1, 2, 3, 4, 5, 6]
)

Він породжує наступний HTML код:

<!DOCTYPE html>
<html>
  <head>
    <title>Value with &lt;unsafe&gt; data</title>
  </head>
  <body>
    1,
    2,
    3,
    4,
    5,
    6
  </body>
</html>

Примітки ред.

  1. The jinja Open Source Project on Open Hub: Languages Page — 2006.
  2. https://github.com/pallets/jinja/blob/2.10/LICENSE
  3. The jinja Open Source Project on Open Hub: Licenses Page — 2006.
  4. Extensions. Jinja2 Documentation (2.8-dev). Архів оригіналу за 9 вересня 2017. Процитовано 26 травня 2015.
  5. Extensions. Jinja2 Documentation (2.8-dev). Архів оригіналу за 9 вересня 2017. Процитовано 26 травня 2015.
  6. DuPlain, R. (2013). Instant Flask Web Development. Packt Publishing. с. 30. ISBN 978-1-78216-963-5. Архів оригіналу за 29 листопада 2018. Процитовано 26 травня 2015.
  7. Архівована копія. Архів оригіналу за 29 грудня 2010. Процитовано 9 вересня 2017.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  8. Ronacher, Armin. Template Designer Documentation. Jinja2 Documentation. Архів оригіналу за 13 листопада 2016. Процитовано 7 січня 2016. A Jinja template doesn’t need to have a specific extension: .html, .xml, or any other extension is just fine.

Джерела ред.