【Python】Jinja2 ~ do文 ~

◾️はじめに

小ネタ。

dbt の macro を作っていてSyntax errorを回避するために
do文(do statement)を使った。
ただ、調べてみてもいい解説しているページが見つからなかったので
自分なりの解釈でまとめてみた

目次

【0】do文の公式ドキュメントの解説
【1】do文の個人的な解釈
 1)使用例

【0】do文の公式ドキュメントの解説

* 調べた限り、以下の2つ。
 => これを読んでもイマイチよく分からない、、、

記述1
https://jinja.palletsprojects.com/en/stable/extensions/#expression-statement

Import name: jinja2.ext.do

The “do” aka expression-statement extension adds a simple do tag
 to the template engine that works like a variable expression
 but ignores the return value.

意訳

"do" 別名 expression文 拡張は、シンプルなdoタグをテンプレート・エンジンに追加する。
その場合、変数式のように動作するが戻り値を無視する

cf. aka = Also Known As = 別名、またの名を

記述2
https://jinja.palletsprojects.com/en/stable/templates/#expression-statement

If the expression-statement extension is loaded,
 a tag called do is available that works exactly like the regular variable expression ({{ ... }});
except it doesn’t print anything. This can be used to modify lists:

{% do navigation.append('a string') %}

意訳

もしexpression-statementエクステンションがロードされていれば、
doというタグが利用できる。
これは正規変数expression({{ ... }})とまったく同じように動作する。
何も表示しないことを除けば。これはリストを修正するのに使えます:

{% do navigation.append('a string') %}

【1】do文の個人的な解釈

* do文は、何か実行する際など、{{ …​ }}的に使える

{% do something() %}

{# 以下同じこと #}
{{ something() }}

1)使用例

{% if 条件式1 %}
  {% do something() %}
{% else %}
  {% do anything() %}
{% endif %}

{% macro something() %}
  Hello
{% endmacro %}

{% macro anything() %}
  World
{% endmacro %}

関連記事

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