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