Django 템플릿 for문 완전 정복: 리스트 컴프리헨션(튜플형태) + 템플릿 반복문 해석

2025. 4. 30. 02:48·기술블로그-Django편

✅ 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
'기술블로그-Django편' 카테고리의 다른 글
  • 📝 Django 모델 클래스 상속 개념 쉽게 이해하기
  • 📚 Github와 레포지토리 연결 및 git push (Pycharm,Django)
  • 📝 파이썬 리스트 컴프리헨션 활용: 구구단 생성하기
  • 📌 Django URL 설정 및 템플릿 활용하기
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (787) N
      • Python (32)
      • 프로젝트 (110) N
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (153)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    youngprofessionals
    newpoliticalparty
    trumpmuskclash
    college reunions
    global politics
    btscomeback
    lawsuitculture
    btsdischarge
    remittance
    classaction
    americanlaw
    urbantrends
    life reflection
    gpterror
    btsjungkook
    btsreunion
    chinanightlife
    smartphonedurability
    homebartrend
    basalcellcarcinoma
    chatgpterror
    travel ban
    뷔
    RM
    self-growth
    hotcoffeecase
    bts
    americaparty
    livebroadcast
    titaniumcase
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Django 템플릿 for문 완전 정복: 리스트 컴프리헨션(튜플형태) + 템플릿 반복문 해석
상단으로

티스토리툴바