PR

【Flask】Jinja2 テンプレートで if による表示条件を設定する

python-dev Flask
python-dev
この記事は約3分で読めます。
記事内に広告が含まれています。

Flask のテンプレートエンジンである Jinja2 では、条件に基づいて表示を分岐させるために、いくつかの方法があります。

主に、ifelifelse ステートメントを使用します。

この記事では、基本的な使用方法を説明します。

Flask とは? Jinja2 とは? といった解説は省略しています。 公式サイトからご確認ください。

Welcome to Flask — Flask Documentation (3.0.x)

基本的な if

これが一番基本的な表示の切り替え方法です。

{% if user.is_authenticated %}
  <p>こんにちは、{{ user.name }}さん!</p>
{% else %}
  <p>こんにちは、ゲストさん!</p>
{% endif %}

この例では、user.is_authenticatedTrue の場合、ユーザーの名前を表示し、それ以外の場合は「ゲスト」と表示します。

スポンサーリンク

複数条件の elif

おおくの言語では else if で他の条件を指定できますよね。

それが jinja2 では elif に該当します。

elseif って書いて動かなかったのは私だけではないはず)

{% if user.role == 'admin' %}
  <p>管理者としてログインしています。</p>
{% elif user.role == 'user' %}
  <p>ユーザーとしてログインしています。</p>
{% else %}
  <p>ゲストとしてアクセスしています。</p>
{% endif %}

この例では、ユーザーの役割に応じて異なるメッセージを表示します。

複合条件の使用

AND 句 に該当する書き方は and です。

{% if user.is_authenticated and user.role == 'admin' %}
  <p>管理者としてログインしています。</p>
{% else %}
  <p>ゲストか一般ユーザーとしてアクセスしています。</p>
{% endif %}

この例では、ユーザーが認証されているかつ管理者である場合にのみ、特定のメッセージを表示します。

スポンサーリンク

for ループ内の if

もちろん、for など他の記述内に埋め込むこともできます。

<ul>
{% for item in items %}
  {% if item.is_available %}
    <li>{{ item.name }}</li>
  {% endif %}
{% endfor %}
</ul>

この例では、利用可能なアイテムのみをリスト表示します。

スポンサーリンク

インライン if 式

この例では、一行で条件に応じた表示を行います。

<p>{{ 'ログイン済み' if user.is_authenticated else '未ログイン' }}</p>

参考



おわりに

Python を用いたアプリケーション開発では、おそらく Django, Flask, FastAPI あたりのフレームワークがよく採用されると思います。

それぞれ特徴があるので、混同しないようにしないとですね。

コメント

タイトルとURLをコピーしました