Python jinja2(flask)를 사용할 때 표현식에서 for문을 사용하는 경우 index(인덱스)값을 가져오는 방법을 알아봅니다. 어떻게 하면 for문의 순서값인 index를 가져오는지 아래를 봐주세요.



# Python for문 표현식 예제보기
아래는 배열값을 가지는 items 변수를 가져와 반복문을 실행하는 예제입니다. 만약 items가 3개의 값을 가지는 경우 for문을 사용하여 루프를 실행해보겠습니다.
<ul>
    {% for item in items %}
   <li>
     {{ loop.index }} 번째 줄입니다
   </li>
    {% endfor %}
</ul>

위 코드를 보면 몇 번째 줄인지 나타내기 위해서 {{ loop.idex }}를 사용하였습니다. 출력결과는 아래와 같습니다.
1 번째 줄입니다
2 번째 줄입니다
3 번째 줄입니다

이처럼 loop객체의 프로퍼티 index는 값 1부터 n까지의 값을 가지고 있습니다. 이를 사용하여 순서, index를 보여주거나 해당 index에만 측정한 코드를 실행하는 것이 가능합니다.


! 1부터 5까지만 출력하는 예제보기
간단한 예제를 하나 더 알아봅니다. 매우 자주 사용되는 방법으로 만약 변수 items의 값이 매우 많을 때 단 5개만 출력하려면 어떻게 할까요? 아래는 오직 1부터 5까지 5개만 출력하는 방법입니다.


이 경우 if를 사용하여 index값이 5보다 같거나 작은 조건만 출력하면 되겠죠. 아래와 같이 사용합니다.
<ul>
  {% for item in items %}
  {% if loop.index <= 5 %}
  <li>
    {{ loop.index }} 번째 줄입니다
  </li>
  {% endif %}
  {% endfor %}
</ul>

출력할 경우 loop.index값이 5보다 같거나 작은 수인 경우만 실행되므로 1에서 5개까지만 출력하게 됩니다.


! 첫 번째 값만 다르게 출력하기
이번에는 위와 동일하게 '몇 번째 줄입니다'라고 출력하되 단, 첫 번째 줄인 경우에는 '첫 번째 줄입니다'로 바꿔서 출력하려고 합니다.
<ul>
  {% for item in items %}
  <li>
  {% if loop.index == 1 %}
    첫 번째 줄입니다
  {% else %}
    {{ loop.index }} 번째 줄입니다
  {% endif %}
  {% endfor %}
  </li>
</ul>

여기서 주의할 부분은 첫 번째 index 값은 0이 아닌 1부터 시작한다는 점입니다. 나머지는 위 예제와 거의 동일합니다.


여기까지 Python Jinja 템플릿에서 for문 사용시 인덱스(index)을 가져오거나 출력하는 방법에 대하여 알아보았습니다.