🧩 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 생성 기능을 갖추고 있습니다.
이 기능을 잘 활용하면 더 깔끔하고 유지보수 쉬운 프론트 코드를 만들 수 있어요! 🎯