Иногда нужно хранить несколько значений одного типа с одинаковым применением. Например, у вас есть множество товаров, которые вы хотите показать клиенту в письме. Создание отдельной переменной для каждого из них было бы слишком трудоемким.
Поэтому в Jinja есть более сложные структуры данных для таких случаев. Эти структуры данных представляют собой набор переменных, хранящихся вместе под одним именем. Они также предоставляют полезные дополнительные функции. В этой статье мы рассмотрим три такие структуры и поможем вам понять ключевые различия между ними.
Самая простая структура данных в Jinja — это список. Список в Jinja гибкий, и вам не нужно заранее знать, сколько элементов в нём будет. Если вам нужно добавить больше элементов, список автоматически расширится.
Более того, вам не нужно беспокоиться о типах данных, которые хранятся в списке. Списки могут содержать любые типы данных, то есть вы можете смешивать разные типы данных в одном списке.
Создание элементов в списке
Чтобы создать список в Jinja, используйте нотацию {% set myList = %}
. Для создания списка используйте квадратные скобки. Внутри скобок укажите значения через запятую. Вы также можете создать пустой список, просто оставив скобки пустыми.
Пример создания списка с элементами:
{% set numbersOneToFive = [1, 2, 3, 4, 5] %}
Пример создания пустого списка:
{% set emptyList = [] %}
Доступ к элементам в списке
Списки в Jinja индексируются, что значит, у каждого элемента есть свой порядковый номер — индекс. Индексы начинаются с 0. Это позволяет легко получить доступ к любому элементу списка.
Для примера создадим следующий список:
{% set myList = ['a', 'b', 'c', 'x', 'k'] %}
Используйте квадратные скобки, чтобы получить элемент по его индексу.
{{ myList[0] }}
— вернет 'a'.{{ myList[4] }}
— вернет 'k'.Важно помнить, что индексы начинаются с 0, а не с 1. Например, myList[1]
вернет второй элемент, а не первый.
Добавление и удаление элементов в списке
Так как списки — это динамические структуры данных, то вы можете добавлять и удалять элементы в шаблонах Jinja.
Добавление элемента в список
Чтобы добавить элемент в список, используйте команду append
:
{% set myList = ['a', 'b', 'c'] %} {% append 'd' to myList %}
Элемент 'd'
будет добавлен в конец списка myList
.
Удаление более одного элемента
Функция index возвращает индекс первого вхождения значения в списке. Если в списке может быть несколько одинаковых значений или вы не уверены, что значение есть в списке, используйте управление потоком или фильтрацию.
{# Инициализируем myList с некоторыми значениями #} {% set myList = [1, 5, 3, 4, 2] %} {# добавляем 5 в myList #} {% append 5 to myList %} {# удаляем второй элемент из списка #} {% set temp = myList.pop(1) %} {# находим индекс числа 2 в myList #} {% set myIndex = myList.index(2) %} {# удаляем число 2 из myList #} {% set temp = myList.pop(myIndex) %} {# выводим список и индекс числа 1 #} {{ "values in my list:"}} {{ myList }} {% set indexOne = myList.index(1) %} {{ "</br> index of the number one:" }} {{ indexOne }}
На выходе получим:
Кортежи — это еще одна структура данных в Jinja. Они похожи на списки, но неизменяемы, то есть их нельзя изменить после создания. Кортежи используются только для чтения.
Создание кортежа
Определите кортеж с помощью круглых скобок:
{% set myPair = ("dog", "cat") %}
Этот кортеж содержит два значения:"dog"
и "cat"
. Кортежи также индексируются с 0.
Доступ к элементам кортежа
Чтобы получить доступ ко второму элементу "cat"
:
{{ myPair[1] }}
Создание кортежа с одним элементом
Если вам нужен кортеж с одним элементом, добавьте запятую после значения:
{% set mySingleton = ("myString",) %}
Теперь вы знаете, как использовать списки и кортежи в Jinja для работы с данными.
Словари — это еще одна структура данных в Jinja. Они похожи на списки, но используются для хранения значений в виде пар "ключ-значение". Вместо индексов, как в списках, словари используют ключи для доступа к значениям.
Определение и использование словаря
Чтобы создать словарь, используйте фигурные скобки:
{% set myDict = {"Animal": "Duck", "Breed": "American Pekin"} %}
Доступ к значениям
Используйте ключ, чтобы получить значение из словаря:
{{ myDict["Animal"] }} {# Вернет "Duck" #}
Пример:
{% set myDict = {"Animal": "Duck", "Breed": "American Pekin"} %} {{ myDict["Animal"] }} {# Выведет "Duck" #}
Важно! Ключи в словарях могут быть не только строками, но и целыми числами, числами с плавающей точкой или даже значением none
.
Теперь вы знаете, как использовать словари в Jinja для хранения и доступа к значениям по ключам.
Другие статьи про Jinja:
Базовый синтаксис Jinja
Фильтры в Jinja
Персонализация с помощью Jinja
Полезные заготовки Jinja-кода