Django

Django Template Language

체리1001 2021. 8. 15.

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

댓글