django의 Template Language는
화면을 구성하는 template을 편리하게 작성할 수 있도록 도와줍니다.
(HTML 문서를 작성할 때 프로그래밍을 하듯 작성할 수 있게 해줍니다.)
<1. 템플릿 변수>
{{ 변수명 }}
{{ 변수명.속성 }}
템플릿 변수는 템플릿이 렌더될 때 우리가 지정해 준 결과로 변환됩니다.
뷰에서 템플릿으로 원하는 데이터를 전달하고,
템플릿은 이 템플릿 변수를 이용해서 전달받은 데이터를 사용합니다.
즉, 템플릿 변수는 뷰에서 템플릿으로 넘겨준 데이터로 해석돼서 변환되는 것이죠.
django에서 템플릿 점 연산자를 만나면 아래와 같은 경우대로 순서대로 처리한다.
(1) 변수를 사전형(dict)으로 생각하고 점(.) 연산자로 key 값 조회
(2) 변수를 객체로 생각하고 내부 속성값 조회 또는 함수 호출
(3) 변수를 리스트(list)로 생각하고 점(.) 연산자로 Index 조회
<2. 템플릿 태그>
{% 태크 %} {%end태그 %}
템플릿을 작성할 때 반복문, 조건문 등의 로직을 사용해서 템플릿을 작성할 수 있개 해줍니다.
(개발자가 직접 태그를 정의해서 사용하는 것도 가능)
(탬플릿 태그 안에 탬플릿 변수를 중첩으로 사용하는 것은 안돼요!)
<!--반복-->
{% for obj in values %} ~ {% endfor %}
{% for food in foods %} <!--역순으로 반복하고 싶다면 {% for food in foods reversed %}-->
<li> {{ foods.name }} </li>
{5 empty 5} <!--이렇게 사용하면 객체가 비어 있거나 존재하지 않을 때 empty 구문이 실행된다 -->
{% endfor %}
<!--조건-->
{% if value1 %} ~ {% else %} ~ {% endif %}
{% if hungry %}
<p> Let's eat! </p>
{% elif sleepy %}
<p> You need some coffee. </p>
{% else %}
<p> Go back to work. </p>
{% endif %}
<!--상속-->
{% block %}
{% endblock %}
<!--with
: 복잡한 변수가 있을 때 별명을 붙이기 위해 사용 -> with 구문 내에서는 value1을 value2 대신 사용할 수 있다.
-->
{% with value1=value2 %} ~ {% endwith %}
<3. 템플릿 필터>
{{ 변수명|필터 }}
템플릿 변수를 특정 형식으로 변환
(일부 필터는 필터 뒤에 인자를 필요로 하며, 개발자가 직접 필터를 정의해서 사용하는 것도 가능하다.)
<!--default
: 참조하는 변수가 비어있거나 false일 경우 변환되는 값을 지정한다-->
{{ variable|default:"coffee" }}
<!--capfirst
: 맨 첫글자를 대문자로 바꿔준다-->
{{ variable|capfirst }}
<!--random
: 반복 가능한 변수에 대해 무작위로 하나를 추출해 변환한다-->
{{ variable|random }}
<!--ljust & rjust
: 주어진 길이 내에서 공백을 넣어 왼쪽 정렬 또는 오른쪽 정렬을 한 문자열을 변환한다-->
{{ variable|ljust:"length" }}
<4. 템플릿 주석>
{# 주석 #}
템플릿 언어의 주석처리를 담당
'Django' 카테고리의 다른 글
상태 코드 (0) | 2021.08.19 |
---|---|
Django 우아한 URL (0) | 2021.08.18 |
Django MVT 구조 (0) | 2021.08.13 |
Django 템플릿과 렌더링 (0) | 2021.08.12 |
Django 요청 url에 따른 내부 실행 순서 (0) | 2021.08.12 |
댓글