Blanktar

  1. top
  2. blog
  3. 2014
  4. 02

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。