【Python】Flask ~ jinja2 ~

 ■ はじめに

 Webフレームワーク 「Flask(フラスク)」の
標準のテンプレートエンジンが、「jinja2(神社2)」らしいので使ってみた

 補足

 * 以下の動画がキャンペーンで「Flask」やってるので勉強してみる

https://paiza.jp/works/search_courses/2002

■ サンプル

 例1)Hello World

main.py

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

# ★Point1★「render_template」をインポートする
from flask import Flask, render_template
app = Flask(__name__)

@app.route("/")
def hello_world():

  name = "Mike"
  names = ["Tom", "Kevin", "Smith"]

  # ★Point2★「render_template()」でテンプレートを呼び出す
  return render_template("index.html", name_val = name, name_vals = names)

if __name__ == "__main__":
  app.run()

templates/index.html

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Flask - Demo</title>
</head>
<body>
{% if name_val %}
  <h1>Hello, {{ name_val }}</h1>
{% else %}
  <p>Hello World!</p>
{% endif %}

{% for name in name_vals: %}
  <p>Hello, {{ name + " from USA" }}!!!</p>
{% endfor %}
</body>
</html>

実行コマンド

python main.py

# 後は、ブラウザで以下にアクセスする

http://localhost:5000

例2 共通テンプレートを作る

main.py

例1の「main.py」と同じなので、省略

templates/common-template.html

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Flask - Demo</title>
</head>
<body>
<h1>Template Sample</h1>
{% block content %}
{% endblock %}
</body>
</html>

templates/index.html

{% extends "common-template.html" %}
{% block content %}
  {% if name_val %}
    <h1>Hello, {{ name_val }}</h1>
  {% else %}
    <p>Hello World!</p>
  {% endif %}

  {% for name in name_vals: %}
    <p>Hello, {{ name + " from USA" }}!!!</p>
  {% endfor %}
{% endblock %}

関連記事

標準テンプレートエンジン
https://dk521123.hatenablog.com/entry/2020/01/07/212138
Jinja2 ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2024/10/19/000848
Jinja2 ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2024/10/18/001757
Jinja ~ マクロ ~
https://dk521123.hatenablog.com/entry/2023/11/28/235951