본문 바로가기
파이썬/파이썬기본문법

파이썬 Django for loop

by flycoding 2024. 3. 6.
반응형

파이썬 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))        

위의 코드를 실행하면 아래 그림과 같다.

파이썬 Django for loop 활용 예제

 

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 활용 예제

 

파이썬 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 루프 데이터베이스 데이터 활용 예제

 

파이썬 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 루프 reversed 활용 예제

 

파이썬 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))

위의 코드를 실행하면 아래 그림과 같다.

파이썬 Django for 루프 empty 활용 예제

 

 

빈 키워드는 개체가 없는 경우에도 사용할 수 있다:

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 루프 empty 활용 예제

 

 

이번 글에서는 파이썬 Django for loop 에 loop variable에 관련해서 실습하며 살펴보았다.

꼭 손으로 눈으로 머리로 익히며 실습하기를 바란다.

모두 화이팅입니다.!!!

 

출처 : 이 글의 출처는 w3schools사이트를 참고하였으며 필자가 추가하여 정리한 글입니다.

반응형

댓글