Flask

Chapter 1-8 Jinja (Template Engine)

Chansman 2025. 4. 17. 13:08

1-7. Jinja (Template Engine)

Jinja 란?

  • Jinja는 파이썬 기반의 템플릿 엔진으로, 주로 웹 개발 프레임워크인 Django, Flask에서 사용됩니다.
  • 동적으로 데이터를 렌더링하여 HTML, XML, 또는 기타 마크업 언어로 출력하는 데 사용됩니다.

Jinja 문법적 특징

1. 변수 출력

  • {{ ... }}: 이 구문은 변수의 값을 출력할 때 사용됩니다. 템플릿에 전달된 변수나 표현식의 결과를 렌더링할 수 있습니다.
<p>{{ variable_name }}</p>

2. 제어 구조

  • {% ... %}: 이 구문은 조건문, 반복문 등의 제어 구조를 표현할 때 사용됩니다.

조건문:

{% if user %}
  <p>Hello, {{ user.name }}!</p>
{% else %}
  <p>Hello, Guest!</p>
{% endif %}

 

반복문:

<ul>
{% for item in item_list %}
  <li>{{ item }}</li>
{% endfor %}
</ul>

간단한 예제:

app.py

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    # 템플릿에 전달할 데이터
    data = {
        'title': 'Flask Jinja Template',
        'user': 'Inseop',
        'is_admin': True,
        'items': ['Item 1', 'Item 2', 'Item 3']
    }

    # render_template을 사용하여 템플릿 파일을 렌더링
    return render_template('index.html', data=data)

if __name__ == '__main__':
    app.run()
  • render_template
    • Flask는 템플릿을 찾기 위해 templates 폴더를 기본으로 사용합니다.

index.html

  • templates 폴더 안에 위치해야 함 ⇒ templates/index.html 

`

<!DOCTYPE html>
<html>
<head>
    <title>{{ data.title }}</title>
</head>
<body>
    <h1>Hello, {{ data.user }}!</h1>

    {% if data.is_admin %}
        <p>You have admin privileges.</p>
    {% else %}
        <p>You do not have admin privileges.</p>
    {% endif %}

    <ul>
        {% for item in data.items %}
            <li>{{ item }}</li>
        {% endfor %}
    </ul>
</body>
</html>

 

이 템플릿은 변수(title, user, is_admin, items)과 제어 구조(if, for)를 사용하여 동적인 HTML을 생성합니다.