Python(Flask+Jinja2)で役立つフィルター一覧

技術

フィルターとは

Jinja2に用意されている機能。テンプレートで何らかの変数について、ある処理を施してから表示を行いたい(ただし、変数自体は書き換えたくない)という場合に利用できる。

具体的な利用例は次の通り。

  • スクリプト例
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route("/")
def index():
message = "This is sample message"
return render_template("index.html", message = message)
  • HTML例
<body>
<h1>Template 例</h1>
<p>{{ message | upper }}</p>
</body>
  • 表示例
<span style="font-size: 150%">Template 例</span>
THIS IS SAMPLE MESSAGE

HTML例のpタグの変数「message」については、スクリプト側から値をもらっている。
渡されたmessageは「This is sample message」となっているが、フィルターを利用することで、messageの値は変えずに、表示するときに「THIS IS SAMPLE MESSAGE」というように大文字に変換して表示することができる。

主なフィルター一覧

テキストを大文字/小文字にする

値 | upper
値 | lower

最初の文字だけ大文字に、後を小文字にする

値 | capitalize

絶対値を得る

値 | abs

値が未定義だったときの初期値を指定する

値 | default(初期値)

テキストをエスケープ処理する

値 | escape

テキストから空白文字を除去する

値 | trim

テキストをURLエンコードする

値 | urlencode

テキストを置換する

値 | replace(検索テキスト, 置換テキスト)

オブジェクトをJSONデータとして得る

値 | tojson

リストの最初/最後を取り出す

リスト | first
リスト | last

リストを1つのテキストにまとめる

リスト | join
リスト | join(区切り文字)

リストの要素数を得る

リスト | length

リストから最小値/最大値を得る

リスト | min
リスト | max

リストからランダムに項目を得る

リスト | random

リストを昇順/降順にソートして表示する

リスト | sort
リスト | reverse

Python勉強始めました

Python初心者ですが、Webアプリケーションの仕組みを学びたいと思っていました。ネットで色々と調べながらの学習を進めていく中で体系的な知識を身に着けたいと思い、色々と本を探していました。この本では、「Flask」「Bootstrap」「Vue.js」といった各種フレームワークを利用してステップ・バイ・ステップで学習を進めていくことができるので気に入って購入しました。
よろしければぜひどうぞ。

コメント

タイトルとURLをコピーしました