◾️はじめに
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