Jinja
Jinja — рушій шаблонів для мови програмування Python створений Арміном Ронакером з ліцензією BSD. На відміну від схожого рушія шаблонів у Django, використовує вирази у стилі мови Python та використовує пісочницю для шаблонів. Завдяки тому, що шаблони 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 <unsafe> data</title>
</head>
<body>
1,
2,
3,
4,
5,
6
</body>
</html>
Примітки
- Release 3.0.1 — 2021.
- The jinja Open Source Project on Open Hub: Languages Page — 2006.
- https://github.com/pallets/jinja/blob/2.10/LICENSE
- The jinja Open Source Project on Open Hub: Licenses Page — 2006.
- Extensions. Jinja2 Documentation (2.8-dev). Архів оригіналу за 9 вересня 2017. Процитовано 26 травня 2015.
- Extensions. Jinja2 Documentation (2.8-dev). Архів оригіналу за 9 вересня 2017. Процитовано 26 травня 2015.
- DuPlain, R. (2013). Instant Flask Web Development. Packt Publishing. с. 30. ISBN 978-1-78216-963-5. Процитовано 26 травня 2015.
- http://jinja.pocoo.org/
- 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.»
Джерела
- Jinja вебсайт
- Jinja2 на Python PyPI
- jinja2 на GitHub