Відкрити головне меню

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

Jinja
Jinja software logo.svg
Тип бібліотека і Шаблонизатор
Розробник Армін Ронакер
Версії 2.10.1 (6 квітня 2019)[1]
Репозиторій github.com/pallets/jinja
Написано на Python[2]
Ліцензія 3-clause BSD License[d][3][4]
jinja.pocoo.org

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

Зміст

ВластивостіРедагувати

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

  • виконання у пісочниці
  • потужна автоматизація перевірки HTML[en] для запобігання атак міжсайтового скриптингу (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 2.10.1 — 2019.
  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). Процитовано 2015-05-26. 
  6. Extensions. Jinja2 Documentation (2.8-dev). Процитовано 2015-05-26. 
  7. DuPlain, R. (2013). Instant Flask Web Development. Packt Publishing. с. 30. ISBN 978-1-78216-963-5. Процитовано 2015-05-26. 
  8. http://jinja.pocoo.org/
  9. Ronacher, Armin. Template Designer Documentation. Jinja2 Documentation. Процитовано 7 January 2016. «A Jinja template doesn’t need to have a specific extension: .html, .xml, or any other extension is just fine.» 

ДжерелаРедагувати