Flask 请求扩展
Flask 请求扩展
from flask import Flask,request app = Flask(__name__)
before_request
# 用before_request装饰的函数是执行响应函数之前执行, # 如果有多个before_request他会自上而下按照顺序执行 # 如果before_request有返回值,那后面的before_request都不会执行,且响应函数也不会执行 # 其有没有返回值都不会影响after_request的执行 @app.before_request def before1(*args,**kwargs): print("参数",args,kwargs) print('我是before1')
after_request
# after_request 是响应函数执行之后触发执行的, # after_request 必须接收一个参数,参数为response对象,而且必须返回 @app.after_request def after1(response): print("响应后的参数",response) print("我是after1") return response
before_first_request
# 当flask项目启动后的页面请求的第一次才会执行,第二次不会执行。与浏览器无关,执行顺序是从上往下 @app.before_first_request def first(): print("我是Flask项目启动后的第一次")
teardown_request
# teardown_request一旦遇到错误就会执行,并且把错误传递给teardown_request装饰的函数, 没有错误也会执行,但是是错误为None,他并不能处理错误,只能记录
@app.teardown_request def tear(e): print(e) print("我是teardown_request")
errorhandle("响应码")
# errorhandle可以捕获错误,并且对错误做出响应,返回给用户。 # 如果你要用 ,你必须指定他是捕获哪种类型的错误,就必须传错误码,然后将返回值返回给用户 @app.errorhandler(500) def error_500(e): print(e) return "我程序崩了"
template_global()页面渲染
@app.template_global() def get_sb(a1,a2): return a1 + a2
# 所有页面渲染的时候如果页面上有sb变量他将自动调用该函数
html页面中的用法
{{sb(1,2)}} #页面显示结果为3
template_filter()过滤器
#可以接收多个参数
@app.template_filter() def db(a1, a2, a3,a4): return a1 + a2 + a3 + a4
html页面
# 用法:{{要接收过滤的值|函数名(参数)}}
{{1|get_something(1,1,1)}} # 页面结果显示为4