Back to Blog

Jinja2のif文の使い方解説!【Flask,Python】

flask

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開発に挑戦してみましょう。

ここまでお読みいただきありがとうございました。

Webの知識を作りながら学ぶ
Flask WebAcademy

SNSアプリやチャットアプリ、さまざまなアプリを作りながら学べる実践的なカリキュラム

詳細を見る