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)
效果:
<!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>