◾️はじめに
小ネタ。 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