Jinja2テンプレートエンジンの基礎と活用方法

Jinja2とは

Jinja2はPython向けの高機能テンプレートエンジンです。Webアプリケーションや静的サイトのHTML生成に広く利用されています。

主な特徴

  • 柔軟な構文:Pythonに似た表記で条件分岐やループが書けます。
  • 継承とブロック:レイアウトを共通化し、部分的に上書き可能。
  • フィルタとテスト:データ変換や検証を簡潔に記述。

基本的な使い方

テンプレートの作成

{% raw %}{% extends \"base.html\" %}{% block content %}
  

{{ title }}

    {% for item in items %}
  • {{ item }}
  • {% endfor %}
{% endblock %}{% endraw %}

Pythonからのレンダリング

from jinja2 import Environment, FileSystemLoader

env = Environment(loader=FileSystemLoader(\"templates\"))
template = env.get_template(\"example.html\")
output = template.render(title='サンプル', items=['A', 'B', 'C'])
print(output)

高度な機能

  • カスタムフィルタの定義
    • def reverse_string(value):
          return value[::-1]
      
      env.filters['reverse'] = reverse_string
  • マクロの利用
    • {% raw %}{% macro render_table(rows) %}
      
        {% for row in rows %}
          {% for cell in row %}{% endfor %}
        {% endfor %}
      
      {{ cell }}
      {% endmacro %}{% endraw %}

まとめ

Jinja2はシンプルさと拡張性を兼ね備えたテンプレートエンジンです。基本構文をマスターすれば、Web開発の生産性を大幅に向上させることができます。