あめがえるのITブログ

頑張りすぎない。ほどほどに頑張るブログ。

【Python】jinjaテンプレートを使ってみた


jinjaテンプレートを使ってみた

jinjaテンプレートとは

Python用のテンプレートエンジン。動的なコンテンツを簡単に生成するための仕組み。FlaskやDjangoで使用されることが多いが単体でも利用可。

名前の由来

日本語の「神社」からとられている。
神社のシンプルさや静寂なイメージをテンプレートエンジンの思想に反映させている。

jinjaテンプレートの特徴

1.変数の埋め込み:{{ 変数名 }}で埋め込み可
2.制御構造:{% for %}でループ処理、{% if %}で条件分岐など可
3.フィルター機能:| upperで大文字変換、| lowerで小文字変換など可
4.カスタム関数の使用:独自のフィルターや関数を追加可


やること

jinjaテンプレートを作成し、Pythonコードの変数で動的に変更されるHTMLファイルを生成する。

実践!

1.jinjaテンプレート作成
1-1.下記ファイルを作成
template.jinja

<!DOCTYPE html>
<html>
<head><title>{{ title }}</title></head>
<body>
    <h1>こんにちは、{{ name }}さん!</h1>
    <p>今日は {{ date }} です。</p>
    <ul>
        {% for item in items %}
            <li>{{ item }}</li>
        {% endfor %}
    </ul>
</body>
</html>


2.jinjaテンプレートを読み込み実行するPythonコードを作成
2-1.下記ファイルを作成
render_template.py

from jinja2 import Environment, FileSystemLoader
import datetime

# Jinja環境の設定(テンプレートファイルの読み込み)
env = Environment(loader=FileSystemLoader("."))  # カレントディレクトリからロード
template = env.get_template("template.jinja")  # テンプレートファイルを指定

# データの準備
context = {
    "title": "Jinja2 テンプレートのサンプル",
    "name": "太郎",
    "date": datetime.date.today().strftime("%Y-%m-%d"),
    "items": ["りんご", "バナナ", "オレンジ"]
}

# HTMLのレンダリング
rendered_html = template.render(context)

# 結果を表示
print(rendered_html)

# ファイルに保存(オプション)
with open("output.html", "w", encoding="utf-8") as f:
    f.write(rendered_html)


3.コマンドプロンプトから実行
3-1.jinja2インストール

> pip install jinja2

※pipのバージョンが古く、jinja2がインストールできない場合、下記でpipをアップグレードする。

> python -m pip install --upgrade pip

3-2.下記を実行

 > python3 render_template.py
> python3 render_template.py

<!DOCTYPE html>
<html>
<head><title>Jinja2 テンプレートのサンプル</title></head>
<body>
    <h1>こんにちは、太郎さん!</h1>
    <p>今日は 2025-02-16 です。</p>
    <ul>

            <li>りんご</li>

            <li>バナナ</li>

            <li>オレンジ</li>

    </ul>
</body>
</html>

3-3.output.htmlが作成されていることを確認



感想

普通にpythonだけでもできると思う。Djangoと連携させると便利なのかな。(;´∀`)