카테고리 없음

🧩 Django 템플릿에서 for 반복문과 forloop.counter0의 의미

Chansman 2025. 4. 30. 00:15

🧩 Django 템플릿에서 for 반복문과 forloop.counter0의 의미

파이썬에서 문자열을 출력할 때는 += 또는 join()으로 HTML을 누적해야 하지만,
Django 템플릿에서는 전혀 다르게 작동합니다. 템플릿 문법의 핵심인 {% for %}와 forloop.counter0의 동작 방식을 깔끔하게 정리해보겠습니다.


✅ 기본 반복문 구조

<body>
    {% for movie in movie_list %}
        <a>{{ movie.title }}</a><br>
    {% endfor %}
</body>
  • movie_list를 반복하면서 각 영화 제목을 출력합니다.
  • 파이썬의 for movie in movie_list: 와 같은 의미입니다.
  • 문자열 누적(+=, join)이 필요 없습니다. → 템플릿 엔진이 자동으로 HTML을 조립해줍니다.

❓ 그런데 forloop.counter0은 왜 쓰는 걸까?

<a href="movie/{{ forloop.counter0 }}">{{ movie.title }}</a>
  • 반복문의 **인덱스(번호)**를 사용해야 할 때 쓰는 템플릿 내장 변수입니다.
  • Django는 for 루프 안에서 다양한 루프 상태 변수를 제공합니다.

템플릿 변수 설명

forloop.counter 1부터 시작하는 반복 횟수
forloop.counter0 0부터 시작하는 반복 인덱스
forloop.first 첫 번째 반복일 때 True
forloop.last 마지막 반복일 때 True

📌 URL 만들 때 자주 쓰임

<a href="/movie/{{ forloop.counter0 }}/">{{ movie.title }}</a>

→ 출력 예:

<a href="/movie/0/">파묘</a>
<a href="/movie/1/">기생충</a>

🧠 파이썬과 Django 템플릿 비교

목적 Python 코드 Django 템플릿 코드

인덱스 포함 반복 enumerate(movie_list) {% for movie in movie_list %} + forloop.counter0
문자열 누적 +=, join() 템플릿이 자동 처리
조건 분기 if i == 0: {% if forloop.first %}

✅ 요약

  • Django 템플릿에서는 += 없이 반복만 써도 HTML이 출력된다 ✅
  • 반복 인덱스가 필요할 땐 forloop.counter0을 쓰면 된다 ✅
  • forloop는 Django가 제공하는 반복문 정보 모음 객체이다 ✅

Django 템플릿은 파이썬 코드 없이도 매우 강력한 HTML 생성 기능을 갖추고 있습니다.
이 기능을 잘 활용하면 더 깔끔하고 유지보수 쉬운 프론트 코드를 만들 수 있어요! 🎯