Jinja

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

Jinja
Тип бібліотека
Шаблонізатор
бібліотека Pythond і template languaged
Розробник Армін Ронакер
Версії 3.0.1 (18 травня 2021)[1]
Репозиторій github.com/pallets/jinja
Мова програмування Python[2]
Ліцензія 3-clause BSD Licensed[3][4]
Вебсайт palletsprojects.com/p/jinja/

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

Властивості

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

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

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

Приклад

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

<!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. Release 3.0.1 — 2021.
  2. The jinja Open Source Project on Open Hub: Languages Page — 2006.
  3. https://github.com/pallets/jinja/blob/2.10/LICENSE
  4. The jinja Open Source Project on Open Hub: Licenses Page — 2006.
  5. Extensions. Jinja2 Documentation (2.8-dev). Архів оригіналу за 9 вересня 2017. Процитовано 26 травня 2015.
  6. Extensions. Jinja2 Documentation (2.8-dev). Архів оригіналу за 9 вересня 2017. Процитовано 26 травня 2015.
  7. DuPlain, R. (2013). Instant Flask Web Development. Packt Publishing. с. 30. ISBN 978-1-78216-963-5. Процитовано 26 травня 2015.
  8. http://jinja.pocoo.org/
  9. 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.»

Джерела

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.