Условные конструкции Jinja в Python
В предыдущей статье про Jinja мы рассмотрели такие его возможности, как перебор коллекций данных циклом for, а также экранирование символов. И конечно же, возможности языка шаблонов Python на этом не исчерпываются. В сегодняшней статье мы увидим как применять условные конструкции с Jinja и Python, а также суммировать данные из коллекции.
Jinja - это язык шаблонов Python и предназначен он для автоматизации создания большого количества текстовых данных, в том числе и html, на основе нескольких шаблонов. Шаблоны также могут включать условные конструкции и фильтр суммы. И рассмотрим их.
Условные конструкции Jinja
Условные выражения - это выражения, которые вычисляются при выполнении определенного условия.
Для примера создадим файл sample.py:
from jinja2 import Environment, FileSystemLoader
coins = [
{'name': 'Bitcoin', 'price': 4307067.17},
{'name': 'Ethereum', 'price': 302306.82},
{'name': 'Binance', 'price': 37105.50},
{'name': 'LTC', 'price': 13451.05},
]
file_loader = FileSystemLoader('templates')
env = Environment(loader=file_loader)
# установка пробелов
env.trim_blocks = True
env.lstrip_blocks = True
env.rstrip_blocks = True
template = env.get_template('showsites.txt')
result = template.render(coins=coins)
print(result)
Далее создаем рядом со скриптом папку templates и помещаем в нее showcoins.txt:
{% for coin in coins %}
{% if coin.price < 30000.0 %}
{{- coin.name }}
{% endif %}
{%- endfor %}
Запустим скрипт:
>>>python sample.py
# вывод
LTC
Фильтр суммы Jinja
Фильтры могут быть применены к данным для их изменения. Например, фильтр суммы может суммировать данные, экранирующий фильтр экранирует их, а фильтр сортировки сортирует их.
# showsites.txt
{{ coins | sum(attribute='price') }}
Записанный в Notepad файл .txt, должен быть сохранен в кодировке ANSI.
Подобным образом можно создавать динамические html-страницы, изменяющие данные в ответ на действия пользователя.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.