Django
[Django] 4. Django Template
개발자 뭄뭄
2022. 9. 2. 17:38
반응형
1. Django Template Language
- 조건, 반복, 변수 치환, 필터 등의 기능을 제공
- python 처럼 프로그래밍 구조를 사용할 수 있지만, ⇒ 파이썬 코드로 실행되는 것이 아님
- 프로그래밍적 로직이 아니라 프레젠테이션을 표현하기 위한 것임.
2. DTL Syntax
- variable
- render()의 세번째 인자로 딕셔너리 형태로 넘겨준다.
- key에 해당하는 문자열이 template에서 사용 가능한 변수명이 된다.
- filters(|)
- 표시할 변수를 수정할 때 사용한다.
- 약간 python의 method를 쓰는 것과 비슷한 것 같다.
<p>{{ pick }}은 {{pick|length}} 글자</p> <p>{{foods|join:","}}</p # 치킨은 2 글자 # 족발,햄버거,치킨,초밥
- chained 도 가능하다.
<p>{{name|upper|truncatewords:10}}</p> # truncatewords:n 은 n 단어가 넘어가면 ...으로 표현한다. # 결과: MY NAME IS HARIM CHUNG. NICE TO MEET YOU. WHERE …
- tags
- 출력 텍스트를 만들거나, 반복, 논리를 수행하여 제어 흐름을 만드는 등 변수보다 복잡한 일을 수행한다.
- 일부 태그는 시작과 종료 태그가 필요하다
<p>메뉴판</p> <ul> {% for food in foods %} <li> {{ food }}</li> {% endfor %} </ul>
메뉴판 - 족발 - 햄버거 - 치킨 - 초밥
- comments
- {# #} : 한 줄짜리 comment 작성 시
- {% comment %} {% endcomment%} : 여러줄의 comment 작성 시, 사이에 쓴다.
3. Template Inheritance
- 코드의 재사용성에 초점을 맞춘다.
- 템플릿 상속을 사용하면 사이트의 모든 공통 요소를 포함하고, 하위 템플릿이 재정의 할 수 있는 블록을 정의하는 기본 skeleton 템플릿을 만들 수 있다.
- 자식(하위) 템플릿은
{% extends ‘부모.html’ %}
를 제일 위에 적으면, 부모의 요소를 상속 받는다.🚫반드시 하나의 부모만 상속할 수 있다.
- 재정의 할 수 있는 부분은 {% block %} 을 사용해서 정의한다.
<!--content 는 block의 이름이다.--> {% block content %} <--이 안에는 바뀔 내용이 들어간다.--> {% endblock %} 혹은 {% endblock content %}
- base.html을 앱 안의 template 디렉토리가 아닌, 프로젝트 최상단의 templates 디렉토리 안에 위치하고 싶다면?
settings.py
>TEMPLATES
>‘DIRS’
: [BASE_DIR / ‘templates’,],최상단의 templates 폴더 안에 base가 될 html을 작성하면 된다.
Uploaded by N2T
반응형