jinja2の関数が結構便利でびっくり。
サイトをちょっと綺麗に改修してみました。 具体的に何をやったかというと、htmlを生成するのに使ってるjinja2のテンプレートのリファクタリングがメイン。 重複してる部分が多かったからね。
で、その時に使ったのがmacroって機能。
たとえば、
<a href="linkA">えー</a> <a href="linkB">びー</a> <a href="linkC">しー</a>
みたいなコードがあったとして。
このままだと全部のリンクにclassを設定したいとかってときに面倒くさいので
{% macro link(text, to) %}<a href="{{ to }}">{{ text }}</a>{% endmacro %}
ってマクロを用意して
{{ link("えー", "linkA") }} {{ link("びー", "linkB") }} {{ link("しー", "linkC") }}
みたいに出来る。 複雑なことするなら便利だよね。
ちなみに、他のファイル(たとえばmacro.html)に書いて
{% import "macro.html" as macro %}
なんてインポートして、
{{ macro.link("でぃー", "linkD") }}
みたいに使うことも出来る。
{% from "macro-library.html" import link %}
ってやれば特定のマクロだけインポートできる。もう普通にpython。