Jinja2のフィルタ機能の説明です。

目次

  1. 使い方
  2. 組み込みフィルタの例
    1. 文字列
    2. 型変換
    3. 数値
    4. 集合操作・集約
  3. フィルタ登録

使い方

htmlファイル内で{ 変数 }の形で流し込むところ、

{ 変数 | フィルタ }

とすることで変数に格納された値を加工して表示することができます。
例えば、

{ str | lower }

で変数str内の文字列はlowerというフィルタがかかって小文字になります。

組み込みフィルタの例

文字列

  • trim()
  • default()
    • default(value: V, default_value: V = '', boolean: bool = False) → Vで、V未定義時にもデフォルト値を入れるには最後の引数のブール値をtrueにする

型変換

  • string()、int()、float()

数値

  • abs()、max()、min()
  • round()
    • 公式の例は{{ 42.55|round|int }}{{ 42.55|round(1, 'floor') }}で、上へはceil

集合操作・集約

  • length()
  • unique()
  • sort()
  • sum()
  • map()
    • 公式の例は{{ users|map(attribute="username", default="Anonymous")|join(", ") }}
  • groupby()
    • 公式の例は{% for city, items in users|groupby("city") %}

フィルタ登録

flaskではtemplate_filter('フィルタ名')でアプリ内に独自フィルタを登録することができます。
次は公式の例で、リストを逆順にするreverseフィルタを登録しています。

@app.template_filter('reverse')
def reverse_filter(s):
return s[::-1]