Python шаблонизатор Jinja

Python шаблонизатор Jinja

Python шаблонизатор Jinja

Jinja — это движок шаблонов для Python. Он похож на движок шаблонов Django.

Механизм шаблонов Jinja или процессор шаблонов — это библиотека, предназначенная для объединения шаблонов с моделью данных с целью создания документов. Механизмы шаблонов часто используются для создания большого количества электронных писем, при предварительной обработке исходного кода или создании динамических HTML-страниц.
И в сегодняшней статье мы реализуем данные примеры.

Мы создаем механизм шаблонов, в котором определяем статические и динамические детали. Динамические части позже заменяются данными. Функция визуализации позже объединяет шаблоны с данными.

И прежде чем перейти к примерам вспомним форматирование строк в Python.



site = "myrusakov"

domen = "ru"



"{0}.{1}".format(site,domen)



# вывод

myrusakov.ru



Аналогичная логика поддерживается и в Jinja.

Установка Jinja



>>pip3 install jinja



Разделители Jinja

Jinja использует различные разделители в строках шаблона.

{%%} — для выражений или логики (например, для циклов)

{{}} — используется для вывода результатов выражения или переменной конечному пользователю.

{##} — комментарии, которые не включены в выходные данные шаблона

### — операторы строки

Простой пример Jinja

# sample.py



# импорт объекта Template, для вычисления и подстановки шаблонов

from jinja2 import Template





site = "myrusakov"

domen = "ru"





tm = Template("My site name is {{ site }}.{{ domen }}")

msg = tm.render(site=site, domen=domen)



print(msg)



# запуск

>>> python sample.py



My site name is myrusakov.ru





В примере запрашивается имя пользователя и генерируется строка сообщения, которая выводится пользователю. Как мы уже сказали выше, механизм шаблонов аналогичен методу Python format(); но он более мощный и имеет гораздо больше возможностей.

В нашем шаблоне у нас есть синтаксис {{}}, который используется для печати переменной. Переменная передается в методе render().

С помощью метода render() мы генерируем конечный результат. Метод соединяет строку шаблона с данными, переданными в качестве аргумента. Переменная, которая передается методу render(), называется контекстной.

Точно также можно работать и с объектами классов и словарей, просто указав нужные поля.

Сырые данные Jinja

Мы можем использовать маркеры raw-endraw, чтобы экранировать разделители Jinja.



from jinja2 import Template



data = '''

{% raw %}

His name is {{ name }}

{% endraw %}

'''



tm = Template(data)

msg = tm.render(name='Peter')



print(msg)



# вывод 

His name is {{ name }}



И конечно же всю мощь данного шаблонизатора можно увидеть в сочетании с таким web-фреймворком, как Flask.

Таким образом, мы рассмотрели язык шаблонов Jinja для Python и
создали простой шаблон, аналогичный методу format.

Источник

НЕТ КОММЕНТАРИЕВ

Оставить комментарий