文字列にフィルターを適用する
フィルターを適用するには、変数名のあとに | (パイプ文字)を挟んでフィルター名を指定します。
<p>{{ "hello, world" | upper }}</p> 上記の例では「 hello, world 」を大文字に変換します。
自作フィルターの作成
以下の場合は、「 {{ 2 | multiplication(3) }} 」の 2 が multiplication 関数の引数 number に渡される値です。
また、変数 i に 3 が渡されます。
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>template filter</h1>
<p>{{ 2 | multiplication(3) }}</p>
</body>
</html> app.py
from flask import Flask, render_template
app = Flask(__name__)
@app.template_filter("multiplication")
def multiplication(number, i):
return number * i
@app.route('/', methods=["GET"])
def index():
return render_template('index.html') 自作フィルターの作成 (Blueprint)
Blueprint でファイルを分けます。
app.py
from flask import Flask, render_template
from .app_module.add_module import bp
app = Flask(__name__)
app.register_blueprint(bp)
@app.route('/', methods=["GET"])
def index():
return render_template('index.html')
if __name__ == "__main__":
app.run() app_module/add_module.py
from flask import Blueprint
bp = Blueprint('add_module', __name__)
@bp.app_template_filter('multi')
def multiplication(number, i):
return number * i templates/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>template filter</h1>
<p>{{ 2 | multi(3) }}</p>
</body>
</html> 用意されているフィルター
| length | リストの要素数を得る |
| join | リストを区切り文字をつけて結合する |
| reverse | リストを逆順にする |
| abs | 絶対値にする |
| capitalize | 最初の1文字目は大文字にし2文字目以降は小文字に変換する |
| default | 変数が存在しない場合に、初期値を入れる |
| dictsort | 辞書型を並び替える |
| escape | 文字列をエスケープ文字に変換する |
| first | リストの一番最初の値を取得する |
| float | 浮動小数点数の指定した桁まで表示する |
| format | 文字列をprintのように特定のフォーマットに入れて表示する |
| groupby | 特定の値を集計する |
| int | 数値型に変換して表示する |
| join | リストを区切り文字をつけて1つのテキストにする |
| last | リストの最後の要素を取得する |
| list | 値をリストに変換する |
| lower | 文字列を小文字に変換する |
| max | リストなどのシーケンス内の最大値を返す |
| min | リストなどのシーケンス内の最小値を返す |
| random | リストなどのシーケンスの中からランダムに取り出して返す |
| replace | 文字列の特定の文字を別の文字に変換する |
| reverse | リストなどを逆順にする |
| round | 浮動小数点数を四捨五入する |
| select | リストなどのシーケンスの中の一部だけとりだす。 |
| slice | 文字列を分割する |
| sort | リストなどのシーケンスを昇順に並び替える |
| sum | リストなどの合計値を計算して表示する |
| tojson | json形式に変換する |
| trim | 文字列の端から指定の文字を削除する。指定しなければ文字列の端の空白を削除する。 |
| upper | 文字列を大文字にする |
| urlencode | 文字列をURLエンコードする |
| wordcount | 文字列の文字数をカウントする |