4、過濾器的使用及自定義過濾器

子线發表於2024-03-21
from flask import Flask, render_template
from datetime import datetime
app = Flask(__name__)


# 定義類用於引數傳遞
class User:
    """
    對於引數age是後續加上去的,因為前期已經對於類進行過例項化了,所以在增加引數時,最好給上一個預設值.
    不然之前的寫法都要重新修改.
    """
    def __init__(self, name, e_mail, age=18):
        self.name = name
        self.e_mail = e_mail
        self.age = age


# 定義過濾器函式(格式化時間)
# 前面有嘗試用format這個作為第二個引數,結果顯示為內建(是提示,並不是報錯).
def datetime_format(value, for_mat="%Y年%m月%d日 %H:%M"):
    return value.strftime(for_mat)


# dformat為在模板中使用的過濾器的名稱.相當於Jinja2模板中自帶的length
app.add_template_filter(datetime_format, "dformat")


@app.route("/")
def hello_world():
    """
    # 關於模板中過濾器(|)的使用,過濾器有很多這裡只舉例(length)說明, 詳見filter.html
    # 如果Jinja2模板自帶的過濾器都不能滿足你的要求,還可以自定義過濾器(自定義的函式:datetime_format)
    """
    user = User(name="Tina", e_mail="714514386@qq.com")
    my_time = datetime.now()
    return render_template("filter.html", user=user, my_time=my_time)


if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5001, debug=True)

效果:

4、過濾器的使用及自定義過濾器
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>過濾器使用</title>
</head>
<body>
<div>使用者名稱: {{ user.name }}-名稱長度: {{ user.name|length }}</div>
<div>時間: {{ my_time }}</div>
<div>自定義過濾器後的時間: {{ my_time|dformat }}</div>
</body>
</html>
filter.html

相關文章