jinja2
Что это?
jinja2 - шаблонизатор - штука, которая рендерит строки с шаблонами
Note
При работе с jinja шаблонами в контекст стоит передавать данные как можно подробнее, не просто context=context, а лучше сделать словарь со всеми полями, которые будешь юзать - так поиск по использованиям будет норм робить, а то поиск по html не оч робит
Пример
import jinja2
env = jinja2.Environment()
rendered = env.get_template('template.html').render(order_number=2)
assert rendered == "Order #2"
Как обрезать ентеры?
О чем речь?
Допустим, есть такой шаблон:
При обычном рендере получим такое:
(и еще перед sam
ентер, хз поч маркдаун его обрезает)
Нам эти пробелы бывают не нужны, хочется так:
Чтобы было без пробелов, передаем в jinja2.Environment
параметр trim_blocks=True
Фильтры
Что такое?
Фильтр - функции, которые можно применять внутри тега
Как писать свои?
- Фильтр - это просто функция:
- Ее нужно зарегистрировать в
jinja2.Environment
:
- Теперь можно использовать в шаблонах:
import jinja2
def wrap_with_b(str_):
return f'<b>{str_}</b>'
env = jinja2.Environment()
env.filters.update({
'b': wrap_with_b,
})
rendered = env.get_template('template.html').render()
assert rendered == "<b>order</b>"
Как передавать дополнительные аргументы?
- Первый аргумент функции - значение шаблона, а остальные аргументы передаем как обычно - в скобках