Django에서 views.py를 통해 html에 데이터를 전달하고자 할 때가 있다. 그 때 for 반복문을 사용하고 싶을 때 쓰는 장고 template tag가 있다.
{% for i in list%}
{{ i }}
{% endfor %}
결과
list 안에 있는 요소들이 하나씩 사용된다.
딕셔너리 형태일 때 for문 사용
{% for key, value in list%}
{{ key }}, {{value}}
{% endfor %}
index 이용하고 싶을 때
우리가 일반적인 for문을 작성할 때 for(int i = 0; i < x ; i++)처럼
i의 역할을 해주는 forloop.counter 를 사용할 수 있다.
forloop.counter : 인덱스가 1부터 시작한다.
forloop.counter0 : 인덱스가 0부터 시작한다.
for loop의 처음과 마지막 부분 확인
{% if forloop.first%} : 만약 루프가 첫 번째 일 때
{% if forloop.last %} : 만약 루프가 마지막 번째 일 때
5 + forloop.counter: {{forloop.counter|add:5}}
forloop.counter - 5: {{forloop.counter|add:"-5"}}
{% if forloop.last and myposts|length|divisibleby:2%}
template tag는 최대한 간단한걸 사용하는게 좋은 것 같다. 파이썬 처럼 for in range는 사용할 수 없는 것 같다. 몇 시간을 구글링 해도 해결책이 보이지 않았고, views.py에서 데이터를 미리 정제해서 html로 전송하는 것이 빠른 해결책이었다. 그 후에는 JS파일에서 split를 사용해서 원하는 데이터를 뽑아낼 수 있었다.