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

0

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