Python | Jinja2 と f文字列 比較した実務上の使い分け

Python
スポンサーリンク

先ほどの「ユーザー名と購入金額を表示する」処理を、HTMLテンプレートとしてJinja2で書いたサンプルを示します。


処理内容

  • ユーザー名 name = "Tanaka"
  • 金額 price = 1234.5
  • 出力形式(HTML):
<p>Tanakaさんの合計金額は 1,234.50 円です。</p>
HTML

Jinja2 HTMLテンプレート例

Python側コード

from jinja2 import Template

# HTMLテンプレート文字列
template_str = """
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>購入情報</title>
</head>
<body>
    <p>{{ name }}さんの合計金額は {{ "{:,.2f}".format(price) }} 円です。</p>
</body>
</html>
"""

# テンプレートを作成
template = Template(template_str)

# データを渡してレンダリング
html_output = template.render(name="Tanaka", price=1234.5)

print(html_output)
Python

出力されるHTML

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>購入情報</title>
</head>
<body>
    <p>Tanakaさんの合計金額は 1,234.50 円です。</p>
</body>
</html>
HTML

✅ ポイント

  • テンプレート内でPythonの書式指定を直接使う場合は {{ "{:,.2f}".format(price) }} のように書けます。
  • Jinja2フィルタを使う方法もあり、例えばカスタムフィルタを定義して {{ price | currency }} のように書くことも可能です。
  • HTMLテンプレートにすることで、Webアプリやメール本文にそのまま利用でき、ロジックと表示を分離できます。
タイトルとURLをコピーしました