Project 관련 글
Django template 사칙연산 tag , for loop tag 정리
somm12
2022. 4. 29. 21:30
forloop tag
Django에서 views.py를 통해 html에 데이터를 전달하고자 할 때가 있다. 그 때 for 반복문을 사용하고 싶을 때 쓰는 장고 template tag가 있다.
- 일반 for 문 작성하기{% for i in list%}
{{ i }}
{% endfor %}
결과 => list 안에 있는 요소들이 하나씩 사용된다.
2. 딕셔너리 형태일 때 for문 사용
{% for key, value in list%}
{{ key }}, {{value}}
{% endfor %}
3. index 이용하고 싶을 때
우리가 일반적인 for문을 작성할 때 for(int i = 0; i < x ; i++)처럼
i의 역할을 해주는 forloop.counter 를 사용할 수 있다.
forloop.counter : 인덱스가 1부터 시작한다.
forloop.counter0 : 인덱스가 0부터 시작한다.
4. for loop의 처음과 마지막 부분 확인
{% if forloop.first%} : 만약 루프가 첫 번째 일 때
{% if forloop.last %} : 만약 루프가 마지막 번째 일 때
사칙연산 tag
- 덧셈할 때5 + forloop.counter: {{forloop.counter|add:5}}
forloop.counter - 5: {{forloop.counter|add:"-5"}} - 나눗셈 (2로 나누어지는지 확인)
프로젝트에서 JS Carousel API를 사용하게 되었는데, row가 2개로 되도록 보여지기 하려고 했다. 그럼 총 포스트 개수가 홀수인지 짝수인지에 따라서 column이 더 생기기 때문에 짝수인지 확인이 필요했다. *참고로 and도 사용가능!{% if forloop.last and myposts|length|divisibleby:2%}
template tag는 최대한 간단한걸 사용하는게 좋은 것 같다. 파이썬 처럼 for in range는 사용할 수 없는 것 같다. 몇 시간을 구글링 해도 해결책이 보이지 않았고, views.py에서 데이터를 미리 정제해서 html로 전송하는 것이 빠른 해결책이었다. 그 후에는 JS파일에서 split를 사용해서 원하는 데이터를 뽑아낼 수 있었다.