✅ Django 템플릿 for문 완전 정복: 리스트 컴프리헨션 + 템플릿 반복문 해석
📌 핵심 키워드 요약
핵심 키워드 설명
리스트 컴프리헨션 | 리스트를 한 줄로 생성하는 문법 ([(i, num*i) for i in range(1,10)]) |
튜플(tuple) | (a, b) 형태로 2개 이상의 값을 묶는 데이터 구조 |
Django 템플릿 for문 | 리스트나 튜플을 반복하면서 데이터를 출력하는 구조 |
🚀 1️⃣ Python 코드 해석: [(i, num * i) for i in range(1, 10)]
'resultss': [(i, num * i) for i in range(1, 10)]
✔️ 코드 해석
- range(1, 10) : 1부터 9까지 숫자를 반복.
- i : 현재 반복하는 숫자.
- num * i : num(단수)와 현재 숫자 i를 곱한 결과.
- (i, num*i)를 튜플로 만들어 리스트에 추가.
✔️ 예시 (num=3일 때)
resultss = [(1, 3), (2, 6), (3, 9), (4, 12), (5, 15), (6, 18), (7, 21), (8, 24), (9, 27)]
i 값 결과(result)
1 | 3 |
2 | 6 |
3 | 9 |
... | ... |
9 | 27 |
이 리스트는 구구단 3단 결과를 (곱하는 수, 결과) 형태로 정리한 것이다.
🔥 2️⃣ Django 템플릿 코드 해석
{% if dudu %}
<h1>{{ dudu }}단</h1>
{% for i, result in resultss %}
<p>{{ dudu }} x {{ i }} = {{ result }}</p>
{% endfor %}
{% endif %}
✔️ 코드 흐름
- {% if dudu %} : dudu라는 값이 존재할 때만 내용을 출력.
- <h1>{{ dudu }}단</h1> : 예를 들어 dudu=3이면 "3단"을 제목으로 표시.
- {% for i, result in resultss %} :
- resultss 리스트 안에 있는 튜플 하나씩 꺼냄.
- i = 곱하는 수, result = 결과값.
- <p>{{ dudu }} x {{ i }} = {{ result }}</p> : 구구단 형식으로 출력.
{% for i, result in resultss %}는 resultss 리스트 안에 있는 (i, result) 튜플을 하나씩 꺼내서 i, result에 각각 나눠 담는 것!
만약 resultss가 이렇게 되어 있다면:
resultss = [
(1, 2),
(2, 4),
(3, 6)
]
그럼 템플릿에서는:
반복 i값 result 값
1회차 | 1 | 2 |
2회차 | 2 | 4 |
3회차 | 3 | 6 |
이렇게 하나씩 나눠서 담아주는거야!
✔️ 실전 예시
만약 dudu = 3, resultss = [(1, 3), (2, 6), (3, 9), ...] 라면:
<h1>3단</h1>
<p>3 x 1 = 3</p>
<p>3 x 2 = 6</p>
<p>3 x 3 = 9</p>
...
<p>3 x 9 = 27</p>
이렇게 출력된다!
📚 주의할 점
- 튜플의 순서가 중요하다!
- (i, result)로 넘겨야 for i, result가 정상 작동한다.
- (3,1) 이런 식으로 넘기면 출력이 꼬인다 (튜플 통째로 출력됨).
- 서버에서 넘길 때 정확한 형태로 넘겨야 템플릿이 제대로 렌더링된다.
🎯 최종 요약
[(i, num*i) for i in range(1, 10)]는 구구단 리스트를 만들고, Django 템플릿의 {% for i, result in resultss %} 문법은 그 리스트를 깔끔하게 반복 출력한다!
✅ 리스트 컴프리헨션과 Django 템플릿 for문을 조합하면 구구단 출력처럼 반복적인 데이터도 쉽게 화면에 출력할 수 있다!
📌 이 방식은 구구단 뿐 아니라, 게시판 목록, 상품 리스트, 영화 목록 출력 등 다양한 곳에 활용할 수 있다! 🚀
range 와 widthratio 활용 하여 아래처럼도 가능하다.
def dudu(request, num):
context = {
'dudu' : num,
'range' : range(1,10)
}
return render(request, 'gugu.html', context)
{% if dudu %}
<h1>{{ dudu }}단</h1>
{% for i in range %}
<p>{{ dudu }} x {{ i }} = {% widthratio num 1 i %}</p>
{# num / 1 * i #}
{% endfor %}
{% endif %}
'기술블로그-Django편' 카테고리의 다른 글
📝 Django 모델 클래스 상속 개념 쉽게 이해하기 (0) | 2025.04.30 |
---|---|
📚 Github와 레포지토리 연결 및 git push (Pycharm,Django) (0) | 2025.04.30 |
📝 파이썬 리스트 컴프리헨션 활용: 구구단 생성하기 (0) | 2025.04.30 |
📌 Django URL 설정 및 템플릿 활용하기 (0) | 2025.04.30 |
🔁 Django 전체 흐름 ( views, urls(route), models, templates) (0) | 2025.04.29 |