Jinja2のif文の使い方解説!【Flask,Python】
2024年7月4日
こんにちは!
今回の記事では、Jinja2のif文の使い方について詳しく解説します。
FlaskはPythonで書かれた軽量なWebフレームワークで、簡単にWebアプリケーションを構築することができます。
FlaskのテンプレートエンジンであるJinja2は、HTMLの中に処理を埋め込むことができます。その中でも、条件分岐を行うためのif文は非常に重要な機能です。
本記事では、FlaskとJinja2を使ったif文の基本的な使い方から応用例までを詳しく解説します。
Jinja2の基本的な使い方
FlaskとJinja2の基本的な使い方を簡単におさらいします。
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', age=30)
if __name__ == '__main__':
app.run(debug=True)
次にJinja2のテンプレートを記述するファイルを作成します。ファイルは以下のようなディレクトリ構造で、templatesディレクトリ配下に作成します。
flask_app/
├── app.py
└── templates/
└── index.html
そして、templates/index.htmlには以下のように記述します。
<!DOCTYPE html>
<html>
<body>
<h1>ようこそ{{ name }}!</h1>
<p>あなたは、{{ age }}歳です。</p>
</body>
</html>
{{ }}を使ってPythonの変数をHTMLに埋め込んでいます。これがJinja2の基本的な使い方です。
Jinja2の基本的な使い方については、以下の記事で詳しく解説しています。
【参考】Jinja2とは何か?Pythonのテンプレートエンジンについて解説
Jinja2のif文の基本
ifには「もし」という意味があります。if文はプログラミングでよく使われる制御処理で、もし〇〇の場合に××を実行するという処理を行います。
if文の構文
Jinaja2での基本的な使い方は以下の通りです。
{% if [条件] %}
<!-- 条件が真のときのHTML -->
{% elif [別の条件] %}
<!-- 別の条件が真のときのHTML -->
{% else %}
<!-- すべての条件が偽のときのHTML -->
{% endif %}
具体的な使用例
次に具体的な使用例を見ていきましょう。
ユーザーが18歳以上かどうかを判定し、表示を変更する場合は以下のようになります。
<!DOCTYPE html>
<html>
<body>
<h1>Welcome, {{ name }}!</h1>
<p>You are {{ age }} years old.</p>
{% if age >= 18 %}
<p>あなたは大人です。</p>
{% else %}
<p>あなたは子どもです。</p>
{% endif %}
</body>
</html>
ここでは、age
が18以上の場合は「あなたは大人です。」と表示され、それ以外の場合は「あなたは子どもです。」と表示されます。
複数条件のif文
Jinja2のif文では、複数の条件を組み合わせることもできます。論理演算子を使用して、複雑な条件を作成することができます。
論理演算子とは、真偽値(True/False)を扱う際に用いられる記号やキーワードのことです。論理和を表す「or」や論理積を表す「and」、否定を表す「not」などがあります。
AND演算子
AND演算子を使って、複数の条件がすべて真の場合に実行される処理を記述します。
{% if age >= 18 and age < 65 %}
<p>あなたは大人ですが、シニアではありません。</p>
{% endif %}
ageが18歳以上で65歳未満場合は、「あなたは大人ですが、シニアではありません。」と表示します。
OR演算子
OR演算子を使って、いずれかの条件が真の場合に実行される処理を記述します。
{% if age < 18 or age >= 65 %}
<p>あなたは子どももしくは、シニアです。</p>
{% endif %}
ageが18歳未満もしくは65歳以上の場合は、「あなたは子どももしくは、シニアです。」と表示します。
NOT演算子
NOT演算子を使って、条件が偽の場合に実行される処理を記述します。
{% if not age >= 18 %}
<p>あなたは大人ではありません。</p>
{% endif %}
ageが18歳以上ではない場合、「あなたは大人ではありません。」と表示します。
if文の中にif文を記述(ネストする)
if文の中にif文を記述(ネスト)する場合は、以下のように記述します。
{% if age >= 18 %}
<p>あなたは大人です。</p>
{% if age >= 65 %}
<p>あなたはシニアです。</p>
{% endif %}
{% else %}
<p>あなたは子どもです。</p>
{% endif %}
if文を入れ子にすることで、より細かい条件分岐が可能になります。
参考
まとめ
今回の記事では、Jinja2のif文の使い方について詳しく解説しました。
Jinja2のif文は、条件に応じて異なるコンテンツを表示するために必要な処理です。基本的なif文から複数条件、入れ子のif文など、さまざまな方法で使用できます。
これらのテクニックを駆使することで、より高度なWebアプリケーションを構築することができます。
FlaskとJinja2を使った条件分岐の使い方をマスターして、さらに高度なWeb開発に挑戦してみましょう。
ここまでお読みいただきありがとうございました。
Pythonの基礎から応用まで学べる
Python WebAcademy
Python WebAcademyでは、Pythonの基礎からアーキテクチャなどの応用的な内容まで幅広く学べます。また、ブラウザ上で直接Pythonコードを試すことができ、実践的なスキルを身につけることが可能です。
無料で試すインフラの学習はInfraAcademy
おすすめの記事