Jinja
![]() | |
Тип | бібліотека Шаблонізатор бібліотека Pythond і Template languaged |
---|---|
Розробник | Армін Ронакер |
Мова програмування | Python[1] |
Ліцензія | модифікована ліцензія BSDd[2][3] |
Репозиторій | github.com/pallets/jinja |
Вебсайт | palletsprojects.com/p/jinja/ |
Jinja — рушій шаблонів для мови програмування Python створений Арміном Ронакером з ліцензією BSD. На відміну від схожого рушія шаблонів у Django, використовує вирази у стилі мови Python та використовує пісочницю для шаблонів. Завдяки тому, що шаблони 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 <unsafe> data</title> </head> <body> 1, 2, 3, 4, 5, 6 </body> </html>
Примітки
- ↑ The jinja Open Source Project on Open Hub: Languages Page — 2006.d:Track:Q124688
- ↑ https://github.com/pallets/jinja/blob/2.10/LICENSE
- ↑ The jinja Open Source Project on Open Hub: Licenses Page — 2006.d:Track:Q124688
- ↑ 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. Архів оригіналу за 29 листопада 2018. Процитовано 26 травня 2015.
- ↑ Архівована копія. Архів оригіналу за 29 грудня 2010. Процитовано 9 вересня 2017.
{{cite web}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання) - ↑ 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 вебсайт [Архівовано 29 грудня 2010 у Wayback Machine.]
- Jinja2 [Архівовано 27 листопада 2017 у Wayback Machine.] на Python PyPI
- jinja2 на GitHub