Jinja2란

Jinja2(이하 Jinja)는 Python 웹 프레임워크인 Flask에 내장되어 있는 Template 엔진이다. Jinja는 JSP의 문법이나 ES6의 template string과 비슷한 문법을 가지고 있다.

Jinja 문법은 간단히 아래와 같다.

  • {{ ... }} : 변수나 표현식
  • {% ... %} : if나 for같은 제어문
  • {# ... #} : 주석

Jinja의 자세한 문법은 https://jinja.palletsprojects.com/en/2.10.x/ 에서 살펴볼 수 있다.

template/index.html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    {% if title %}
    <title>{{ title }}</title>
    {% endif %}
</head>
<body>

<h1>Bind string: {{ home_str }}</h1>
<p>This page is for Flask tutorial.</p>
<p>Bind list value: {{ home_list[2:4] }}</p>
<ul>
  {% for idx in home_list %}
  <li>{{ idx }}</li>
  {% endfor %}
</ul>

</body>
</html>

app.py

from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
@app.route('/index')
def index():
    return render_template(
                'index.html',
                title     = 'Flask Template Test',
                home_str  = 'Hello Flask!',
                home_list = [1, 2, 3, 4, 5]
            )

@app.route('/info')
def info():
    return render_template('info.html')

# app.run(debug = True)

Conda CLI 환경의 pytest 폴더에서 flask run을 입력하여 Flask 서버를 기동한 후, http://127.0.0.1:5000/로 접속가능하다