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>
filter.html

 

posted on 2024-03-21 13:13  子线  阅读(28)  评论(0)    收藏  举报