빠른 참조

Jinja 및 Jinja2 템플릿 치트 시트

Python/Flask용 Jinja 템플릿 문법 빠른 참고 가이드: 변수, 필터, 제어 구조, 반복문, 템플릿 상속 및 매크로 요약.

· 게시일

Jinja는 Flask 및 Ansible에서 널리 사용되는 빠르고 표현력이 풍부하며 확장 가능한 Python 템플릿 엔진입니다.

문법 구분 기호

{% ... %}  # 제어 구문 (반복문, 조건문, 블록 정의)
{{ ... }}  # 평가되어 템플릿 출력으로 인쇄되는 표현식
{# ... #}  # 템플릿 주석 (최종 출력에서는 제거됨)

변수 및 필터

<h1>Hello {{ user.name | capitalize }}</h1>
<p>{{ article.body | truncate(150) | safe }}</p>
<p>Items count: {{ items | length }}</p>

자주 쓰는 필터: capitalize, lower, upper, title, trim, striptags, join, default, safe.

제어 구조

조건문

{% if user.is_authenticated %}
  <p>Welcome back, {{ user.name }}!</p>
{% elif user.is_invited %}
  <p>Please complete your registration.</p>
{% else %}
  <a href="/login">Sign in</a>
{% endif %}

반복문

<ul>
{% for item in items %}
  <li class="{{ 'odd' if loop.odd else 'even' }}">
    {{ loop.index }}: {{ item.title }}
  </li>
{% else %}
  <li>No items available.</li>
{% endfor %}
</ul>

반복문 헬퍼: loop.index (1부터 시작), loop.index0 (0부터 시작), loop.first, loop.last, loop.length.

템플릿 상속

기본 레이아웃 (base.html):

<!DOCTYPE html>
<html>
<head><title>{% block title %}My Site{% endblock %}</title></head>
<body>
  <main>{% block content %}{% endblock %}</main>
</body>
</html>

자식 템플릿:

{% extends "base.html" %}
{% block title %}Dashboard - My Site{% endblock %}
{% block content %}
  <h1>Welcome to your Dashboard</h1>
{% endblock %}

참고 자료

관련 주제