MVT 방식에서 사용자에게 보여주는 화면, 즉 UI를 담당하고 있는 기능이 템플릿 시스템입니다.
사용자에게 어떻게 보여줄지에 대한 룩앤필을 표현한다는 것입니다.
템플릿 코딩은 프로그래밍이라기 보다는 화면 구현에 가깝습니다.
탬플릿 코드에 if태그 for 태그 등이 있지만 파이썬 프로그래밍 언어의 문법과 다르다.
템플릿 시스템에서만 사용되는 고유의 문법입니다. 템플릿 코드를 템플릿 파일로 해석하는 과정을 장고에서는 렌더링이라고 합니다. 결과물인 템플릿 파일은 html xml json 등의 단순한 텍스트 파일입니다.
템플릿 시스템의 문법을 이해하는 것이 중요한 게 아니라, 이러한 문법이 적용된 화면이 결국은 화면 디자인 측면에서 어떤 효과를 주는지 예측하면서 이해하는 것이 중요합니다.
<aside> 💡 템플릿 코드 vs 템플릿 파일 : 두 용어를 꼭 구분해야하는 건 아니지만 템플릿에 대해 언급할떄 렌더링이라는 용어는 중요하므로, 렌더링 전의 템플릿 문법에 따라 작성된 파일은 템플릿 코드, 렌더링 후의 결과물인 HTML과 같은 텍스트 파일은 템플릿 파일이라고 하겠습니다.
</aside>
템플릿 코드에서는 변수를 사용할 수 있습니다. 변수는 다음과 같은 형식을 사용한다.
{{variable}}
템플릿 시스템은 변수를 평가해서 변수값으로 출력해줍니다. 변수명은 일반 프로그래밍의 변수명처럼 문자, 숫자, 밑줄을 사용하여 이름을 정의합니다. 또한 변수의 속성에 접근할 수 있는 도트 표현식도 사용가능합니다.
장고는 템플릿 시스템에서 도트는 파이썬 언어와 조금 다릅니다. 템플릿 문법에서 도트를 만나면 장고는 다음 순서로 참기(lookup)를 시도합니다. 예를 들어 foo.bar라는 템플릿 변수가 있다면 다음과 같이 해석합니다.
템플릿 시스템은 정의가 되어 있지 않은 변수를 사용하는 경우 빈 문자열로 ㅐ워주며 이 값을 변경할려면 setting.py의 속성을 지정해줘야합니다.
TEMPLATE_STARTING_IF_INVALID
필터란 일반적인 용어로 어떤 객체나 처리 결과에 추가적으로 명령을 적용하여 해당 명령에 맞게 최정 결과를 변경하는 것이다. 장고의 템플릿 ㅜㄴ법에서도 템플릿 변수에 필터를 적용하여 변수의 풀력 결과를 변경할 수 있습니다.
필터는 아래의 예시처럼 파이프 문자를 사용합니다. name 변수 값의 모든 문자를 소문자로 바꿔주는 필터입니다.