---
metadata:
  - name: generator
    content: Diplodoc Platform v5.62.0
style:
  - _assets/styles/custom.css
  - _assets/fonts-golos-text.css
  - _assets/styles/hero-gradient.css
  - _assets/styles/hero-decoration.css
script:
  - _assets/scripts/latex-trust.js
description: Руководство пользователя (новая версия) - Циклы
title: Циклы
vcsPath: sintaksis-shablonov/upravliaiushchie-struktury/tsikly.md
alternate:
  - href: sintaksis-shablonov/upravliaiushchie-struktury/tsikly.md
    type: text/markdown
    title: Markdown version
  - href: ../../llms.txt
    rel: describedby
theme: _assets/style/theme.css
---

# Циклы

Цикл задается командой «for». Содержимое цикла повторяется на каждом проходе.

## Циклы по элементам списка
Цикл делает столько проходов, сколько элементов в списке. После «for» указывается любое имя для текущего элемента, после «in» — название списка:

```jinja
{% for element in list_example %}
1. {{ element }}
{% endfor %}
```


1. красный
1. оранжевый
1. желтый
1. зеленый
1. голубой
1. синий
1. фиолетовый

## Циклы по объектам
Цикл делает столько проходов, сколько в проекте объектов этого типа. После «for» указывается любое имя для текущего объекта, после «in» — код типа объектов:

```jinja
{% for comp in component %}
Содержимое
{% endfor %}
```


Подробнее см. [«Объекты в шаблонах»](https://docs.gost-on.ru/guide/sintaksis-shablonov/obekty-v-shablonakh.html)

## Циклы со счетчиками
Имя счетчика указывается после «for», а диапазон и шаг — в скобках после «range»: начальное число, конечное число (само оно в диапазон не входит) и шаг.

```jinja
Нечетные натуральные числа меньше 100:
{% for i in range (1, 100, 2) %}{{ i }} {% endfor %}
```


Нечетные натуральные числа меньше 100:
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 

## Использование условий
Условие можно поставить прямо в команду цикла — тогда цикл выполнится, только если условие выполняется:

```jinja
{% for comp in component if components_necessary == "true" %}
Содержимое
{% endfor %}
```


В цикл можно добавить и «else»:

```jinja
{% for comp in component if components_necessary == "true" %}
Содержимое
{% else %}
Описание компонентов не требуется
{% endfor %}
```


Если условие не выполняется, цикл не делает ни одного прохода, и выводится то, что стоит между «else» и «endfor». Такая запись равносильна следующей:

```jinja
{% if components_necessary == "true" %}
{% for comp in component %}
Содержимое
{% endfor %}
{% else %}
Описание компонентов не требуется
{% endif %}
```


Цикл по пустому списку ничего не выводит, поэтому «else» удобно использовать для случая, когда элементов нет:

```jinja
{% for comp in component %}
Содержимое
{% else %}
Компоненты не обнаружены
{% endfor %}
```


## Прерывание прохода
Чтобы пропустить остаток текущего прохода и перейти к следующему, используйте команду «continue»:

```jinja
{% for element in list_example %}
{% if element == "оранжевый" %}
{% continue %}
{% endif %}
1. {{ element }}
{% endfor %}
```


**Результат:**
1. красный
1. желтый
1. зеленый
1. голубой
1. синий
1. фиолетовый

## Прерывание цикла
Чтобы досрочно завершить цикл, используйте команду «break»:

```jinja
{% for element in list_example %}
1. {{ element }}
{% if element == "желтый" %}
{% break %}
{% endif %}
{% endfor %}
```


**Результат:**
1. красный
1. оранжевый
1. желтый
