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

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

Источник

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

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