Циклы и блоки if в шаблонах
Создавайте повторяющиеся разделы конфигурации
«Циклы и блоки if в шаблонах» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
Логика находится в {% %}
Помимо вывода значений, Jinja2 выполняет управляющую логику внутри тегов {% %}. Так один шаблон создаёт множество строк. 🔁
Простой цикл for
Используйте цикл for, чтобы повторять строки для элементов списка. Каждый элемент создаёт ещё один блок обработанного текста.
{% for host in backends %}
server {{ host }};
{% endfor %}Всегда закрывайте блоки
Для каждого открывающего тега нужен закрывающий: endfor завершает цикл, так же как endif завершает условие. Если забыть его, обработка завершится с ошибкой.
Перебор словаря
Перебирайте пары словаря с помощью .items(), сохраняя каждый ключ и значение для создания структурированной конфигурации.
{% for key, val in settings.items() %}
{{ key }} = {{ val }}
{% endfor %}Переменная loop
Внутри цикла Jinja2 предоставляет loop.index для текущего счётчика, а loop.first и loop.last — удобные логические значения.
{% for s in servers %}
server{{ loop.index }} {{ s }};
{% endfor %}Простой блок if
Блок if обрабатывает своё содержимое только тогда, когда условие истинно, поэтому необязательная конфигурация появляется только при необходимости.
{% if enable_ssl %}
ssl on;
{% endif %}if, elif и else
Объединяйте варианты с помощью elif и завершающего else. Обрабатывается ровно одна ветвь, как и в Python.
{% if env == 'prod' %}
level = warn
{% else %}
level = debug
{% endif %}Условия внутри циклов
Вложите if в for, чтобы обрабатывать только подходящие элементы, например пропускать отключённые серверы в пуле.
{% for h in hosts %}
{% if h.enabled %}
server {{ h.ip }};
{% endif %}
{% endfor %}Управление пробелами
Циклы могут оставлять пустые строки. Дефисы, например {%- -%}, удаляют окружающие пробелы для аккуратного вывода.
{%- for h in hosts -%}
{{ h }}
{%- endfor -%}else у цикла for
У цикла for может быть блок else, который выполняется только при пустом списке, что удобно для вывода разумного резервного варианта.
{% for h in backends %}
server {{ h }};
{% else %}
# no backends defined
{% endfor %}Теги вывода и логики
Различайте их: {{ }} выводит значение, а {% %} управляет потоком выполнения, но сам ничего не выводит.
Быстрая проверка
Вы хотите повторить строку конфигурации для каждого узла в списке. Какой тег запускает такой цикл?
Итоги
Теперь Вы умеете выполнять циклы с помощью for, ветвить логику с помощью if, читать loop.index, вкладывать блоки и удалять лишние пробелы. Один шаблон теперь создаёт динамическую конфигурацию. ✨
Часто задаваемые вопросы
Урок «Циклы и блоки if в шаблонах» бесплатный?
Да — полный текст урока «Циклы и блоки if в шаблонах» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Циклы и блоки if в шаблонах»?
Создавайте повторяющиеся разделы конфигурации Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Циклы и блоки if в шаблонах»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Модуль template и файлы .j2
- Переменные и выражения в Jinja2
- Циклы и блоки if в шаблонах
- Фильтры: default, join и upper