【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が作成されていることを確認
