• 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によって用意されているフィルターである。
ここでは、自分で使いたいようにフィルターを作成する方法について説明する。

テンプレートフィルターを自作する方法

テンプレートのフィルターを自分で作成するには、@app.template_filterを関数の前にデコレータとして追加する。
そのあと、テンプレート内でそのフィルター名を指定して利用すればよい。

・ビューでフィルターを登録する

@app.template_filter('my_filter') # 追加したいfilterの作成
def my_filter_function(s): # 第一引数がフィルターを適用する変数
return '×××' # フィルターを適用して返す値

・htmlファイルでフィルターを利用する

{{ variable | my_filter }} # 追加したfilterの適用

 
また、自作したフィルターに引数を追加したい場合には、関数に引数を追加すればよい。
以下に、指定したインデックスの文字を大文字にする自作フィルターを作成する方法を記述した。

Example

  • フィルターの作成
from flask import Flask, render_template

app = Flask(__name__)

@app.template_filter('my_upper_filter')
def my_upper_filter(s, idx=0): # idxの位置だけ大文字にして、それ以外はそのまま返す
    return s[:idx] + s[idx].upper() + s[idx+1:]

@app.route('/')
def index():
    name = 'abcdefg'
    return render_template('index.html', name=name)

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

 

  • テンプレートでのフィルターの利用(index.html)
{{ name | my_upper_filter(1) }} <!-- my_upper_filterを第1引数がname, 第2引数が1で実行して返り値(aBcdefg)を表示する -->

このように、ビルトインのフィルターだけでなく、フィルターを自作することもできる。


« Previous

テンプレートのフィルター

Next »

url_forでの画面遷移


Flask入門記事一覧はこちら

Filed Under: Flask Tagged With: flask, python

Primary Sidebar

注目記事

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

スポンサーリンク