• Skip to main content
  • Skip to secondary menu
  • Skip to primary sidebar

Tech Life

エンジニアの生き方を考えるメディア

  • プログラミング
    • Python入門
    • Flask入門
    • Django入門
  • 利用規約
  • プロフィール
You are here: Home / IT・プログラミング / Python / フレームワーク / Flask / Flaskのテンプレートのフィルター機能の利用、フィルター一覧

Flaskのテンプレートのフィルター機能の利用、フィルター一覧

2020年12月20日 by 9nmatsumoto

Flaskのテンプレートは、フィルターという機能がある。
フィルターというのは、テンプレート上で値を変換したい場合に用いられる。
下記に、フィルターの使い方・実装方法とフィルター一覧を記載する

テンプレートのフィルターの実装方法

フィルターを利用するには、2通りの方法がある。
文全体に対して、フィルターを適用する場合には以下のようにする。
以下の場合、filter ~ endfilterに記述した内容にたいして、フィルターが適用される。

{% filter フィルター名 %}
:
{% endfilter %}

 
また、特定の変数に対してフィルターを行う場合には、変数名に|(パイプ)を付けて、フィルターを適用する。

{{ 変数名 | フィルター名 }}

以下に具体例を説明したい。ここでは、小文字を大文字にするフィルターupperを利用する。

Example

  • ビューでテンプレートに値を渡す(view.py)
from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    name = 'taro' # nameという変数にtaroを小文字で入れる
    return render_template('index.html', name=name)

if __name__ == '__main__':
    app.run(debug=True)

 

  • テンプレートの実装(index.html)

以下の例では、filter~endfilterの間、のすべての文にupperが適用される。

{% filter upper %} <!-- filterを利用して、endfilterまでの間全て、にupper(大文字化)が適用される -->
hi, my name is {{ name }}
{% endfilter %}

 
このようにすると、hi, my name is {{ name }}すべてにたいして、upperフィルターが適用されて、全て大文字になって表示される。

  • 画面表示結果


 
次に、一部の変数に対して、フィルターを適用する。{{ 変数 | フィルター }}とすることで、変数に対してフィルターを適用できる

  • テンプレートの実装(index.html)
hi, my name is {{ name | upper }}<!-- nameに対してupperフィルターを利用して、大文字化する。 -->

 
このようにすると、hi, my name is {{ name }}のnameにたいして、upperフィルターが適用されて、全て大文字になって表示される。

  • 画面表示結果

フィルター一覧

参考: 公式サイト
上の例では、大文字化をするupperフィルターについて紹介したが、他にも様々なフィルターを利用することができる。

  • 代表的なフィルター一覧
フィルター名 処理内容
abs 絶対値にして返す
attr 属性を指定して値を返す。foo|attr("bar") とするとfoo.barと同じようにfooのbarキーを返す
capitalize 最初は大文字、あとは小文字に変換する
default 変数が存在しない場合に、デフォルト値を入れる(例: {{ my_variable|default('my_variable is not defined') }})
dictsort 辞書型を並び替える
escape 文字列をエスケープ文字に変換する
filesizeformat kB, MBなどの読みやすいファイルの容量のフォーマットに変換する
first リストなどのシーケンスの一番最初の値を返す
float 浮動小数点数の指定した桁まで表示する
format 文字列をprintのように特定のフォーマットに入れて表示する(例: {{ "%s, %s!"|format(greeting, name) }})
groupby リストに対して、特定のキーに対してgroupbyをして集計する
int 数値型に変換して表示する
join リスト型などを引っ付ける(例: {{ [1, 2, 3]|join('|') }} -> 1|2|3)
last リストなどのシーケンスの一番最後の値を返す
list 値をリストに変換する
lower 文字列を小文字に変換する
map リストなどのシーケンス内の各値に対して、フィルターを適用したい場合に用いる
max リストなどのシーケンス内の最大値を返す
min リストなどのシーケンス内の最小値を返す
random リストなどのシーケンスの中からランダムに取り出して返す
reject リストなどのシーケンスの中から特定のものだけはじく(例:{{ numbers|reject("odd") }}# oddは奇数なので奇数インデックスのものを削除して取り出す)
rejectattr リストなどのシーケンスの中の値の属性を元に特定のものだけはじく(例:{{ users|rejectattr("is_active") }}
replace 文字列の特定の文字を別の文字に変換する
reverse リストなどを逆順にする
round 浮動小数点数を四捨五入する
safe 文字列をエスケープせずに表示する(文字列が安全な場合に利用する)
select リストなどのシーケンスの中の一部だけとりだす。({{ numbers| select('odd') }}# oddは奇数なので奇数インデックスのものを取り出す)
selectattr リストなどのシーケンスの中の値の属性を元に特定のものだけとりだす。({{ users|selectattr("is_active") }} # usersの中でis_activeがTrueのものだけ取り出す
slice 文字列などを、指定した数で分割する(例: items|slice(3) itemsを3分割する)
sort リストなどのシーケンスを昇順に並び替える
string 文字列Unicodeに変換する
sum リストなどの合計値を計算して表示する
title 文字列の1文字目を大文字に、残りを小文字にする
tojson jsonに変換する
trim 文字列の端から特定の文字を削除する。デフォルトで文字列の端の空白を削除する。
unique リストなどのシーケンスからユニークなものだけ取り出す
upper 文字列を大文字にする
urlencode 文字列をURLエンコードする
urlize 文字列内のURLを画面遷移できるようにする
wordcount 文字列の存在する文字の数をカウントする

« Previous

テンプレートを継承する方法

Next »

テンプレートを自作する方法


Flask入門記事一覧はこちら

Filed Under: Flask Tagged With: flask, python

Primary Sidebar

注目記事

プロのエンジニアが選ぶPython入門者、初心者向けの書籍10選
元SEが語る、システムエンジニア(SE)ってどんな仕事?きつくてつらいのか?
元SEが語る、システムエンジニアの良いところ

スポンサーリンク