【Python】Jinja2 ~ 変数 ~

◾️はじめに

Jinja2で変数が文字列もしくは1要素のタプルの場合、文字列として扱い
1文字づつループされてしまい、その対策として変数をチェックすることを
調べたので、Jinja2の変数全般をまとめてみた

目次

【1】変数定義
【2】変数参照
【3】変数チェック
 1)未定義かどうか
 2)Noneかどうか
 3)文字列かどうか
 4)要素かどうか

【1】変数定義

{% set 変数名 = 変数の値 %}

# or

{% set 変数名 %}
変数の値
{% endset %}

【2】変数参照

{{ 変数名 }}

【3】変数チェック

1)未定義かどうか

# if <変数> is defined
{% if tabel_names is defined %}

2)Noneかどうか

# if <変数> is none
{% if tabel_names is none %}

使用上の注意

* None じゃだめ (小文字で none )

3)文字列かどうか

# if <変数> is string
{% if tabel_names is string %}

使用上の注意

* str じゃだめ

4)要素かどうか

* 以下が参考になる

https://stackoverflow.com/questions/11947325/how-to-test-for-a-list-in-jinja2

# if <変数> is iterable and <変数> is not string and <変数> is not mapping
{% if tabel_names is iterable and tabel_names is not string and tabel_names is not mapping %}

補足:リスト限定の場合 (タプルは不可)

# if <変数>.__class__.__name__ == 'list'
{% if tabel_names.__class__.__name__ == 'list' %}

関連記事

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/06/001255
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