# Jinja2: 템플릿 엔진 Jinja2는 파이썬에서 사용되는 강력하고 유연한 템플릿 엔진입니다. 특히 Flask와 같은 웹 프레임워크에서 HTML 페이지를 동적으로 생성하는 데 널리 사용됩니다. Jinja2를 사용하면 복잡한 웹 페이지를 효율적으로 관리하고, 데이터를 동적으로 렌더링할 수 있습니다. * 간결한 문법: 파이썬과 유사한 문법을 사용하여 쉽게 학습하고 사용할 수 있습니다. * 강력한 기능: 조건문, 반복문, 상속, 필터 등 다양한 기능을 제공하여 복잡한 템플릿을 구현할 수 있습니다. * 안전성: 자동으로 HTML 엔티티를 이스케이프하여 XSS 공격을 방지합니다. * 확장성: 커스텀 필터, 테스트, 글로벌 변수 등을 정의하여 기능을 확장할 수 있습니다. ## Jinja2의 기본 구조 Jinja2 템플릿은 .html 확장자를 가지는 파일로, HTML 코드와 Jinja2 특정 문법이 혼재되어 있습니다. * 변수 출력: {{ 변수명 }} * 조건문: {% if 조건 %} ... {% endif %} * 반복문: {% for item in list %} ... {% endfor %} * 주석: {# 주석 내용 #} ```jinja
This is the about page.
{% endblock %} ``` * `{% extends "base.html" %}`: base.html 템플릿을 상속합니다. * `{% block title %}{% endblock %}`: title 블록을 정의하여 자식 템플릿에서 내용을 채울 수 있도록 합니다. * `{% block content %}{% endblock %}`: content 블록을 정의하여 각 페이지의 주요 내용을 채울 수 있도록 합니다. ## include include는 다른 템플릿 파일을 현재 템플릿에 포함시키는 지시자입니다. 마치 함수 호출처럼 다른 템플릿을 호출하여 그 내용을 현재 위치에 삽입하는 효과를 냅니다. ```jinja {% include 'header.html' %} ``` ## macro macro는 템플릿 내에서 함수처럼 사용할 수 있는 코드 블록입니다. 특정 기능을 수행하는 코드를 한 번 정의해놓고, 필요한 곳에서 호출하여 사용할 수 있습니다. ```jinja {% macro input(name, value='', type='text') %} {% endmacro %} ```