【Python】Jinja2 ~ 条件分岐 ~

◾️はじめに

Jinja2の条件分岐についてメモ。

目次

【1】if文
 1)サンプル
【2】論理演算子
 1)サンプル
【3】三項演算子
 1)サンプル

【1】if文

{% if 条件式1 %}
  {# 条件式1が true なら実行される #}
{% elif 条件式2 %}
  {# 条件式2が true なら実行される #}
{% else %}
  {# 条件式1も2 false なら実行される #}
{% endif %}

1)サンプル

{% if name_val %}
  <h1>Hello, {{ name_val }}</h1>
{% else %}
  <p>Hello World!</p>
{% endif %}

【2】論理演算子

* and / or は普通に使える
論理演算子
and
or

1)サンプル

{%- if flg1 and flg2 %}
flg1とflg2の値が存在する場合に出力する
{%- elif flg1 or flg2 %}
flg1またはflg2の値が存在する場合に出力する
{%- endif %}

【3】三項演算子

* Python の三項演算子と同じ

構文

{{ <真の場合の値> if <条件式> else <偽の場合の値> }}'

1)サンプル

from jinja2 import Environment, FileSystemLoader

env = Environment(loader=FileSystemLoader('./', encoding='utf8')) 
template = env.get_template('./templates/sql.j2')
result = template.render(
  #table_names='table1'
  #table_names=['table1']
  #table_names=('table1')
  #table_names=['table1', 'table2', 'table3']
  table_names=('table1', 'table2', 'table3')
)
print(result)

./templates/sql.j2

{%- set tables = [table_names] if table_names is string else table_names -%}
{%- for table in tables %}
  SELECT COUNT(*) FROM {{ table }}
  {%- if not loop.last %}
    UNION ALL
  {%- endif %}
{%- endfor %}

関連記事

Jinja2 ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2024/10/19/000848
Jinja2 ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2024/10/18/001757
Jinja2 ~ フィルタ ~
https://dk521123.hatenablog.com/entry/2024/10/20/002622
Jinja2 ~ Macro ~
https://dk521123.hatenablog.com/entry/2023/11/28/235951
Jinja2 ~ 変数 ~
https://dk521123.hatenablog.com/entry/2025/04/05/131421
Jinja2 ~ do文 ~
https://dk521123.hatenablog.com/entry/2025/04/03/221326
Jinja2 ~ Whitespace Control ~
https://dk521123.hatenablog.com/entry/2024/10/29/151203
dbt ~ 条件分岐 ~
https://dk521123.hatenablog.com/entry/2024/09/11/003301
Flask ~ jinja2 ~
https://dk521123.hatenablog.com/entry/2018/09/22/142348
標準テンプレートエンジン
https://dk521123.hatenablog.com/entry/2020/01/07/212138