자주 사용되는 구조를 일반화해서 하나의 공법으로 만든 것
MVC 패턴을 기반으로 조금 변형된 패턴
MCV
Model - View - Controller
데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트 디자인 패턴
Model
데이터와 관련된 로직을 관리
데이터 구조 정의하고 데이터베이스 기록 관리
View
레이아웃과 화면을 처리
사용자 인터페이스 구조와 레이아웃을 정의
Controller
명령을 model과 view부분으로 연결
클라이언트 요청에 대해 처리 분기하는 역할
데이터가 필요 > 모델에 접근해서 데이터 가져옴 > 가져온 데이터를 템플릿으로 보내 화면 구성 > 구성된 화면을 응답으로 클라이언트에게 반환
장고는 MTV 디자인 패턴
모델 : 데이터 관련
템플릿 : 화면 관련
뷰 : 모델 & 템플릿 중간 처리 및 응답 반환
데이터 표현을 제어하는 도구이자 표현에 관련된 로직 동적 컨텐츠 삽입
Django Template Language
Variale 변수가 어떻게 보여질지 바꿔준다
`{{variable}}
영어, 숫자, 밑줄의 조합으로 구성
dot(.)으로 변수 속성에 접근
render의 세 번째 인자로 {'key': value}처럼 딕셔너리 형태로 넘김
key에 해당하는 문자열이 template에서 사용 가능한 변수명이 됨
Filters 변수가 보여지는게 바꿔진다
{{variable|filter}}
ex. {{name|lower}}
모두 소문자로 출력
60개의 built-in template filters를 제공
일부 필터는 인자를 받기도 한다 `{{name|truncatewords: 30}}
Tags 기능적인 것을 태그화
{% tag %}
출력 텍스트를 만들거나 반복, 논리를 수행하여 제어 흐름을 만드는 등
변수보다 복잡한 일들을 수행
일부 태그는 시작과 종료 태그 필요 {% if %}{% endif %}
24개의 빌트인 템플릿 태그 제공
Comments 주석
{# #}
한 줄 주석만 사용 가능 (줄바꿈 사용 불가)
여러 줄 주석은
{% comment %} 여러 줄 주석 {% comment %}
{% extends '' %}
자식(하위)템플릿이 부모 템플릿을 확장한다는 것을 알림
{% block content %}{% endblock content %}
장고는 URL 끝에 /가 없다면 자동으로 붙여주는 것이 기본 설정
템플릿 많은 부분이 중복되고,
일부만 변경되는 상황에서 비슷한 URL과 템플릿을 계속 만들지 말자
URL 주소를 변수로 사용하는 것
URL 일부를 변수로 지정해 view 함수의 인자로 넘길 수 있음
변수 값에 따라 하나의 path()에 여러 페이지를 연결 시킬 수 있음