Условные конструкции Jinja в Python

Условные конструкции 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-страницы, изменяющие данные в ответ на действия пользователя.

Источник

Статьи по теме

Добавить комментарий

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Back to top button