[Django] template에서 index 사용하기/multi for loop

JH Park·2021년 7월 3일
0

Web

목록 보기
5/7
post-thumbnail

views에서 title_list, startTime_list, endTime_list 이렇게 세 종류의 list를 넘겨준다.
title의 n번째, startTime의 n번째, endTime의 n번째 원소는 짝이 되어 한가지 일정이 된다.

{%for startTime in startTime_list%}
{{startTime}}
{{%end for%}

{%for endTime in endTime_list%}
{{endTime}}
{{%end for%}

{%for title in title_list%}
{{title}}
{{%end for%}

templates에서 이렇게 사용하게 될 경우 짝인 것끼리 보여줄 수 없게 된다.

c# 코딩을 할 때는

for(int i=0;i<title_list.count;i++)
{
    print(title_list[i]+ ":" +startTime_list[i]+ ":" +endTime_list[i])
}

for each문이 아닌 for문을 돌려서 모든 list에서 같은 인덱스끼리 묶어서 출력할 수 있다.

template에서 이처럼 index를 사용하여 나타낼 수 있나 찾아보니

1. forloop.counter0

#views
from django import template
register = template.Library()
@register.filter
def index(sequence, position):
    return sequence[position]
    
#templates    
{% for item in iterable1 %}
  {{ iterable2|index:forloop.counter0 }}
{% endfor %}    

forloop.counter를 사용하여 할 수 있다고 하는데 나는 잘 안됐다.

2. multi for loop

#views
schedule_list=zip(startTime,endTime,titles)   

#templates   
{% for startMinute,endMinute,title in schedule_list%}
{{title}} : {{startTime}} : {{endTime}}<br>
{%endfor%}

zip을 이용하여 list를 묶고 multi for loop을 하니 내가 원하는대로 출력이 됐다!

profile
Computer Engineering Student

0개의 댓글