Jinja2とは何か?Pythonのテンプレートエンジンについて解説
2024年7月3日
こんにちは。
今回の記事では、Jinja2(読み方:ジンジャツー)について詳しく解説します。
Jinja2とは、Pythonプログラミング言語で記述されたテンプレートエンジンです。Jinja2は、データをテンプレートに注入してHTMLやXMLなどのマークアップ言語を生成するために広く使用されています。
この記事では、Jinja2の基本、主な機能、使用方法、など詳しく説明します。
Jinja2はテンプレートエンジン
Jinja2とは、Pythonプログラミング言語で記述されたテンプレートエンジンです。
Jinja2を知るためには、テンプレートエンジンについて知っておく必要があるので、先にテンプレートエンジンの概要を説明します。
テンプレートエンジンとは?
テンプレートエンジンとは、静的なテンプレートファイルに動的なデータを組み込んで、最終的な出力を生成するものです。
簡単に言うと、プログラムで使うデータとHTMLのテンプレートを組み合わせて、最終的なウェブページを作り出す仕組みです。
なぜテンプレートエンジンが必要なのか?
なぜWebページを作る際にテンプレートエンジンが必要なのでしょうか?
ウェブサイトやウェブアプリケーションでは、ページの内容がユーザーや状況によって変わることがよくあります。
例えば、ユーザーごとに異なるプロフィールページや、最新の記事を表示するニュースサイトなどです。これを効率よく実現するためには、HTMLのコードと動的なデータをうまく組み合わせる必要があります。
このように、動的に変化するデータとHTMLのコードを組み合わせて使用する時にテンプレートエンジンが必要になります。
Jinja2はPythonで記述するテンプレートエンジン
ここで、Jinja2に話を戻します。
Jinja2は、PythonのウェブフレームワークであるFlaskのデフォルトテンプレートエンジンとして広く使われています。
Flaskの開発者であるArmin Ronacherによって作成され、2008年に最初のバージョンがリリースされました。Jinja2は、Djangoテンプレートエンジンの設計に影響を受けていますが、独自の機能と柔軟性を持っています。
Flaskについては、こちらで詳しく解説しています。
関連記事:Flaskとは?Pythonのマイクロフレームワークを徹底解説
Jinja2の使い方
次にJinja2の使い方について解説します。
Jinja2はFlaskで使われることが多いので、Flaskをインストールして確認してみましょう。
Flaskの事前準備
ここでは、Flaskが起動するようにインストールを行います。以下のコマンドを実行しましょう。
pip install Flask
Flaskのアプリケーションのコード(app.py)を以下のように記述します。
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html', name='John')
if __name__ == '__main__':
app.run(debug=True)
次にJinja2のテンプレートを記述するファイルを作成します。ファイルは以下のようなディレクトリ構造で、templatesディレクトリ配下に作成します。
flask_app/
├── app.py
└── templates/
└── index.html
Jinja2の基本的な使い方
Jinja2では、テンプレート内で変数を使用してデータを表示できます。変数を二重中括弧 {{ }}
で囲みます。
<p>Hello, {{ name }}!</p>
こちらは、app.pyで定義したname変数の値を出力します。以下の部分で、name変数に”John”という値を代入して、テンプレートに渡しています。
return render_template('index.html', name='John')
制御構造
Jinja2は、テンプレート内で条件分岐やループを使用することができます。
条件分岐では、if文を使います。
{% if user.is_authenticated %}
<p>Welcome, {{ user.username }}!</p>
{% else %}
<p>Please log in.</p>
{% endif %}
ループでは、for文を使います。
<ul>
{% for item in items %}
<li>{{ item }}</li>
{% endfor %}
</ul>
マクロ
Jinja2では、マクロを記述することができます。
マクロは、テンプレート内で再利用可能なコードブロックを定義するために使用されます。関数のように振る舞い、引数を受け取ることができます。
{% macro render_item(item) %}
<li>{{ item }}</li>
{% endmacro %}
<ul>
{% for item in items %}
{{ render_item(item) }}
{% endfor %}
</ul>
{% macro render_item(item) %}の部分でJinja2のマクロを定義しています。render_itemという名前のマクロを定義し、itemという引数を取ります。
受け取った引数をHTMLの<li>タグで出力するというのが今回のマクロです。
このようにJinja2のマクロを使います。
参考リンク
まとめ
今回の記事では、Jinja2(ジンジャツー)について解説しました。
Jinja2のようなテンプレートエンジンは、ウェブ開発において必要不可欠なツールです。テンプレートエンジンを使うことで、開発のスピードと効率が向上し、コードの保守性も高まります。
使い方を覚えて、今後の開発にお役に立てれば幸いです。
ここまでお読みいただきありがとうございました。
Pythonの基礎から応用まで学べる
Python WebAcademy
Python WebAcademyでは、Pythonの基礎からアーキテクチャなどの応用的な内容まで幅広く学べます。また、ブラウザ上で直接Pythonコードを試すことができ、実践的なスキルを身につけることが可能です。
無料で試すインフラの学習はInfraAcademy
おすすめの記事