파이썬 Django for loop
for loop은 배열, 목록 또는 사전의 항목을 루프오버하는 것과 같이 시퀀스를 반복하는 데 사용된다.
목록의 항목을 순환한다:
template.html <!DOCTYPE html> <html> <body> {% for x in fruits %} <h1>{{ x }}</h1> {% endfor %} <p>In views.py you can see what the fruits variable looks like.</p> </body> </html> |
views.py from django.http import HttpResponse from django.template import loader def testing(request): template = loader.get_template('template.html') context = { 'fruits': ['Apple', 'Banana', 'Cherry'], } return HttpResponse(template.render(context, request)) |
위의 코드를 실행하면 아래 그림과 같다.
template.html <!DOCTYPE html> <html> <body> {% for x in cars %} <h1>{{ x.brand }}</h1> <p>{{ x.model }}</p> <p>{{ x.year }}</p> {% endfor %} <p>In views.py you can see what the cars variable looks like.</p> </body> </html> |
views.py from django.http import HttpResponse from django.template import loader def testing(request): template = loader.get_template('template.html') context = { 'cars': [ { 'brand': 'Ford', 'model': 'Mustang', 'year': '1964', }, { 'brand': 'Ford', 'model': 'Bronco', 'year': '1970', }, { 'brand': 'Volvo', 'model': 'P1800', 'year': '1964', }] } return HttpResponse(template.render(context, request)) |
cars 리스트내의 항목을 하나씩 순환하며 인쇄하면 아래 그림과 같다.
파이썬 Django for loop 모델로부터 데이터
모델의 데이터는 행과 열이 있는 표와 같다.
앞서 작성한 Member 모델에는 5개의 행이 있고 각 행에는 3개의 열이 있다:
id | first name | last name | phone | joined_date |
1 | Emil | Refsnes | 5551234 | 2022-01-05 |
2 | Tobias | Refsnes | 5557777 | 2022-04-01 |
3 | Linus | Refsnes | 5554321 | 2021-12-24 |
4 | Lene | Refsnes | 5551234 | 2021-05-01 |
5 | Stalikken | Refsnes | 5559876 | 2022-09-29 |
모델에서 데이터를 가져올 때 QuerySet 개체로 제공되며 위의 자동차 예와 유사한 형식(사전이 있는 목록)을 사용한다:
<QuerySet [ { 'id': 1, 'firstname': 'Emil', 'lastname': 'Refsnes', 'phone': 5551234, 'joined_date': datetime.date(2022, 1, 5) }, { 'id': 2, 'firstname': 'Tobias', 'lastname': 'Refsnes' 'phone': 5557777, 'joined_date': datetime.date(2021, 4, 1) }, { 'id': 3, 'firstname': 'Linus', 'lastname': 'Refsnes' 'phone': 5554321, 'joined_date': datetime.date(2021, 12, 24) }, { 'id': 4, 'firstname': 'Lene', 'lastname': 'Refsnes' 'phone': 5551234, 'joined_date': datetime.date(2021, 5, 1) }, { 'id': 5, 'firstname': 'Stalikken', 'lastname': 'Refsnes' 'phone': 5559876, 'joined_date': datetime.date(2022, 9, 29) } ]> |
데이터베이스에서 가져온 항목을 루프스루한다:
template.html <!DOCTYPE html> <html> <body> {% for x in members %} <h1>{{ x.id }}</h1> <p> {{ x.firstname }} {{ x.lastname }} </p> {% endfor %} <p>In views.py you can see how to import and fetch members from the database.</p> </body> </html> |
views.py from django.http import HttpResponse, HttpResponseRedirect from django.template import loader from .models import Member def testing(request): mymembers = Member.objects.all().values() template = loader.get_template('template.html') context = { 'members': mymembers, } return HttpResponse(template.render(context, request)) |
위의 코드를 실행하면 아래 그림과 같다.
파이썬 Django for loop reversed
reversed 키워드는 루프를 역순으로 수행하고자 할 때 사용된다.
template.html <!DOCTYPE html> <html> <body> {% for x in members reversed %} <h1>{{ x.id }}</h1> <p> {{ x.firstname }} {{ x.lastname }} </p> {% endfor %} <p>In views.py you can see how to import and fetch members from the database.</p> </body> </html> |
views.py from django.http import HttpResponse, HttpResponseRedirect from django.template import loader from .models import Member def testing(request): mymembers = Member.objects.all().values() template = loader.get_template('template.html') context = { 'members': mymembers, } return HttpResponse(template.render(context, request)) |
위의 코드를 실행하면 아래 그림과 같다.
파이썬 Django for loop empty
empty 키워드는 개체가 비어 있는 경우 특별한 작업을 수행하려는 경우 사용할 수 있다.
template.html <!DOCTYPE html> <html> <body> <ul> {% for x in emptytestobject %} <li>{{ x.firstname }}</li> {% empty %} <li>No members</li> {% endfor %} </ul> <p>In views.py you can see the emptytestobject.</p> </body> </html> |
views.py from django.http import HttpResponse, HttpResponseRedirect from django.template import loader def testing(request): template = loader.get_template('template.html') context = { 'emptytestobject': [], } return HttpResponse(template.render(context, request)) |
위의 코드를 실행하면 아래 그림과 같다.
빈 키워드는 개체가 없는 경우에도 사용할 수 있다:
template.html <!DOCTYPE html> <html> <body> <ul> {% for x in myobject %} <li>{{ x.firstname }}</li> {% empty %} <li>No members</li> {% endfor %} </ul> <p>In views.py you can see that there is no myobject variable.</p> </body> </html> |
views.py from django.http import HttpResponse, HttpResponseRedirect from django.template import loader def testing(request): template = loader.get_template('template.html') context = { 'fruits': ['Apple', 'Banana', 'Cherry'], } return HttpResponse(template.render(context, request)) |
위의 코드를 실행하면 아래 그림과 같다.
이번 글에서는 파이썬 Django for loop 에 loop variable에 관련해서 실습하며 살펴보았다.
꼭 손으로 눈으로 머리로 익히며 실습하기를 바란다.
모두 화이팅입니다.!!!
출처 : 이 글의 출처는 w3schools사이트를 참고하였으며 필자가 추가하여 정리한 글입니다.
'파이썬 > 파이썬기본문법' 카테고리의 다른 글
파이썬 Django 주석(Comments) (0) | 2024.03.08 |
---|---|
파이썬 Django for loop variables (0) | 2024.03.07 |
파이썬 Django Operator-1 (0) | 2024.03.05 |
파이썬 django if tag (0) | 2024.03.04 |
파이썬 Django 템플릿 태그(template tags) (0) | 2024.03.03 |
댓글