Variable
{{ variable }}
ender를 사용하며 views.py에서 정의한 변수를 template 파일로 넘겨 사용하는 것
변수명은 영어, 숫자와 밑줄의 조합으로 구성될 수 있으나 밑줄로는 시작할 수 없음
dot(.)를 사용하여 변수 속성에 접근할 수 있음
render()의 세번째 인자로 {'key':value}와 같이 딕셔너리 형태로 넘겨주며, 여기서 정의한 key에 해당하는 문자열이 template에서 사용 가능한 변수명이 됨
Filters
{{ variable|filter }}
표시할 변수를 수정할 때 사용
60개의 built-in template filters를 제공
예시
{{ name|lower}}
chained가 가능하며 일부 필터는 인자를 받기도 함
{{ variable|truncatewords:30 }}
Tag
{% tag %}
{% if %}{% endif %}
{# #}
{# {% if _ %} texxt {%else%} #}
템플릿 상속은 기본적으로 코드의 재사용성에 초점을 맞춤
템플릿 상속을 사용하면 사이트의 모든 공통 요소를 포함하고, 하위 템플릿이 재정의(override) 할 수있는 블록을 정의하는 기본 “skeleton” 템플릿을 만들 수 있음
# settings.py
TEMPLATES = [
{
...,
'DIRS': [BASE_DIR / 'firstpjt' / 'templates'],
...
]
app_name/templates
디렉토리 외 추가 경로 설정{% extends '' %}
자식(하위)템플릿이 부모 템플릿을 확장한다는 것을 알림
반드시 템플릿 최상단에 위치해야 함(== 템플릿의 첫번째 템플릿 태그여야 함)
하위 템플릿에서 재지정(overriden)할 수 있는 블록을 정의
하위 템플릿이 채울 수 있는 공간
가독성을 높이기 위해 선택적으로 {% endblock %}
태그에 이름 지정
{% block content %}
{% endblock content %}
{% include '' %}
표현과 로직(view)을 분리
우리는 템플릿 시스템이 표현을 제어하는 도구이자 표현에 관련된 로직일 뿐이라고 생각한다.
템플릿 시스템은 이러한 기본 목표를 넘어서는 기능을 지원하지 말아야 한다.
중복을 배제
대다수의 동적 웹사이트는 공통 헤더, 푸터, 네이게이션 바 같은 사이트 공통 디자인을 갖는다.
Django 템플릿 시스템은 이러한 요소를 한 곳에 저장하기 쉽게 하여 중복 코드를 없애야 한다.
이것이 템플릿 상속의 기초가 되는 철학이다.