【Python】Jinja2 ~ Macro ~

■ はじめに

https://dk521123.hatenablog.com/entry/2018/09/22/142348

で、Pythonのテンプレートエンジンである Jinja を取り扱ったが
今回は、Jinjaの マクロについて扱う。

目次

【1】マクロ機能
【2】構文
 1)定義
 2)呼び出し
【3】サンプル
 例1:Hello world
【4】その他 Tips
 1)フィルタ(|)

【1】マクロ機能

* 繰り返し出てくる記述を簡略化することができる機能

【2】構文

1)定義

{% macro 名前 ( 引数 ) -%}
  ・・・表示内容・・・
{% -endmacro %}

2)呼び出し

{{ マクロ名(実引数リスト) }}

【3】サンプル

例1:Hello world

<ul>
  <li>Coffee</li> <- 繰り返し部分
  <li>Tea</li>      <- 繰り返し部分
  <li>Milk</li>    <- 繰り返し部分
</ul>

マクロ定義

{% macro create_list(value) %}
  <li>{{ value }}</li>
{% endmacro %}

呼び出し

<ul>
{{ create_list("Coffee") }}
{{ create_list("Tea") }}
{{ create_list("Milk") }}
</ul>

【4】その他 Tips

* 以下のサイトに詳しく書いてある

https://qiita.com/simonritchie/items/cc2021ac6860e92de25d

1)フィルタ(|)

* 対象変数後に「|(パイプ)」を書き、その後に対象フィルタ名を記述すると
 Linuxの|(パイプ)みたいに、そのフィルタを適用した後が返る
 => 以下の例をみた方が理解が早いと思う

{% set values = ["Hello", "World"] %}
{{ values | join(', ') }} # Hello, World

# 詳細は、以下の関連記事を参照のこと

Jinja2 ~ フィルタ ~
https://dk521123.hatenablog.com/entry/2024/10/20/002622

参考文献

https://note.com/toshiyamiyazaki/n/n94d2d3d29fa1
https://blanktar.jp/blog/2014/02/jinja2-macro
https://udon.little-pear.net/jinja2-template-primer/#lwptoc6
https://chayarokurokuro.hatenablog.com/entry/2019/10/27/102306#macro-%E3%83%9E%E3%82%AF%E3%83%AD

関連記事

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 ~ Whitespace Control ~
https://dk521123.hatenablog.com/entry/2024/10/29/151203
Flask ~ jinja2 ~
https://dk521123.hatenablog.com/entry/2018/09/22/142348
dbt Macro ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/11/29/003751
dbt Macro ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2024/10/22/002940