Django template 사칙연산 tag , for loop tag 정리

안소민·2021년 7월 24일
0

forloop tag

Django에서 views.py를 통해 html에 데이터를 전달하고자 할 때가 있다. 그 때 for 반복문을 사용하고 싶을 때 쓰는 장고 template tag가 있다.

  1. 일반 for 문 작성하기

    {% for i in list%}
    {{ i }}
    {% endfor %}

결과
list 안에 있는 요소들이 하나씩 사용된다.

  1. 딕셔너리 형태일 때 for문 사용

    {% for key, value in list%}
    {{ key }}, {{value}}
    {% endfor %}

  2. index 이용하고 싶을 때
    우리가 일반적인 for문을 작성할 때 for(int i = 0; i < x ; i++)처럼
    i의 역할을 해주는 forloop.counter 를 사용할 수 있다.

    forloop.counter : 인덱스가 1부터 시작한다.
    forloop.counter0 : 인덱스가 0부터 시작한다.

  3. for loop의 처음과 마지막 부분 확인

    {% if forloop.first%} : 만약 루프가 첫 번째 일 때
    {% if forloop.last %} : 만약 루프가 마지막 번째 일 때

사칙연산 tag

  1. 덧셈할 때

    5 + forloop.counter: {{forloop.counter|add:5}}
    forloop.counter - 5: {{forloop.counter|add:"-5"}}

  2. 나눗셈 (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를 사용해서 원하는 데이터를 뽑아낼 수 있었다.

profile
개발자가 되고픈

0개의 댓글