Python과 달리 반복문을 중단(break)하거나 건너뛰기(continue) 할 수 없음. 그러나 반복 중에 if not 이용해 시퀀스를 필터링해서 아이템 건너뛰기 가능함. (예) hidden 속성의 사용자 건너뛰기 경우.
{% for user in users if not user.hidden %}
<li>{{ user.username|e }}</li>
{% endfor %}
for 예제 - else (= 반복 안 될 때 기본 블럭 표시)
시퀀스가 비어 있거나 필터링으로 인해 시퀀스의 모든 항목이 제거되어 반복이 발생 않는 경우 else 사용해 기본 블록을 렌더링 가능.
<ul>
{% for user in users %}
<li>{{ user.username|e }}</li>
{% else %}
<li><em>사용자 없음.</em></li>
{% endfor %}
</ul>
PS.
Python에서는 해당 반복이 중단(break) 안 될 때마다 else 블록이 실행됨. Jinja 루프는 중단 안 되므로 else 키워드의 약간 다른 동작이 선택됨.
for 예제 - recursive (= 재귀반복문 생성)
반복을 재귀적으로 사용하는 것도 가능함. 이는 사이트맵이나 RDFa와 같은 재귀 데이터를 처리하는 경우 유용함. 반복을 재귀적으로 사용하려면 기본적으로 반복문 정의에 recursive 수정자를 추가하고 재귀하려는 새 반복항목을 loop 보조함수로 호출해야 함. (예) 재귀 반복 사용해 사이트맵 구현.
loop 변수는 항상 가장 가까운(가장 안쪽) 루프를 참조함. 반복 수준이 두 개 이상인 경우 재귀적으로 사용하려는 반복 뒤에 {% set outer_loop = loop %} 작성해 변수 loop를 다시 바인딩 가능함. 그런 다음 {{ outer_loop(...) }} 사용해 호출 가능함.
반복문에서 할당(assignments)은 반복이 끝나면 지워지며 반복 범위보다 오래 지속될 수 없음. 이전 버전의 Jinja에는 일부 상황에서 할당이 작동하는 것처럼 보이는 버그가 있었음. 이는 지원되지 않음. 이 문제 처리 방법에 대한 자세한 내용은 Assignments (할당) 참조.
for 예제 - loop.previtem / loop.nextitem (= 이전/이후 아이템)
마지막 반복 이후 일부 값이 변경되었는지 또는 다음 반복에서 변경될 것인지 확인하려는 경우 loop.previtem과 loop.nextitem 변수를 사용 가능.
{% for value in values %}
{% if loop.previtem is defined and value > loop.previtem %}
The value just increased!
{% endif %}
{{ value }}
{% if loop.nextitem is defined and loop.nextitem > value %}
1. 채팅창 헤드에서 접속자 확인2. 닉네임 클릭해 1:1 채팅 가능 3. 닉네임 클릭해 귓속말 가능 4. 닉네임 클릭해 호출하기 가능 5. 우하단 클릭해 환경 설정 가능 6. 의뢰글 작성 후 의뢰 상담 가능 7. 질문글 작성 후 질문 상담 가능8. 채팅방에 개인정보 입력 금지9. 채팅방에 광고 욕설 비방 금지