Flask에서는 HTML을 편리하게 렌더링하는 함수를 제공하기 때문에 쉽게 웹 페이지를 클라이언트에게 넘겨줄 수 있다. 렌더링을 통해 원하는 페이지를 넘겨주면 좋겠지만 상황에 따라 다르게 보여줘야 하는 경우에는 힘들 수도 있다. 예를 들어 오늘의 날씨나 날짜처럼 실시간으로 변하는 값을 페이지에 표시하려면 기본적인 HTML만 사용한다면 수작업으로 바꿔주어야 하기 때문이다.
이러한 상황에서 유용한 도구가 Jinja와 같은 템플렛 엔진(web template engine)이다. 템플렛 엔진은 맞춤형 웹 페이지를 자동으로 생산할 수 있도록 도와주어 검색창에서 특정 검색어를 찾았을 때 해당 검색어를 기준으로 결과 페이지가 보여지는 것 같은 효과를 준다.
Jinja는 장고(Django)의 템플릿 엔진을 모델링했으며 파이썬 문법과 친화적인 도구로 학습이 용이하고 사용하기 쉽게 되어있다고 한다. 또한 Jinja2는 Flask 설치와 함께 설치되기 때문에 추가 설치가 필요 없다고 한다. (Flask 개발자가 jinja도 만들었다고 한다.)
HTML 파일에서 Jinja를 사용할 때는 중괄호{}
를 많이 사용한다.
예를 들어 변수를 사용할 때에는 아래처럼 사용할 수 있다.
<body>
<h1>{{ title }}</h1>
</body>
여기에서는 title
이라는 변수를 <h1>
태그 안에 넣어서 렌더링을 하는 방식이다.
다음 세 가지가 Jinja에서 주로 활용되는 표현식이다.
- {{% 내용 %}} : if나 for 등의 구문에서 사용된다.
- {{ 내용 }} : 변수 등이 템플렛 결과(html)에 출력될 표현이다.
- {# 내용 #} : 주석 처리할 때 사용된다.