请求扩展:
@app.before_first_request 最先执行的请求扩展函数
@app.before_request 其装饰的函数不用带参数,|先定义的先执行| 如果有return,不会执行后续的before_request函数及响应函数,直接执行after_request的函数
响应函数
@app.after_request 其装饰的函数一定要带参数 |先定义的后执行|,所有after_request装饰的函数都会执行并return response
@app.teardown_request 程序一旦遇到错误就会执行,并将错误传给其装饰的函数,没有遇到错误也会执行该函数,错误值为None,但他不可以拦截错误
@app.errorhandler(404) 或者@app.errorhandler(500) 可以拦截错误,给前端渲染其他页面
@app.template_global() 前后端不分离时,可以在前端直接调用函数
@app.template_filter() 前后端不分离时,可以在前端直接调用函数
{{ get_sb(1,2)}} # @app.template_global()装饰的get_sb
{{1|get_something(1,1,1)}} # @app.template_fliter()装饰的get_something
自定义中间件
class MyMiddleware: def __init__(self,old_wsgi_app): self.old_wsgi_app =old_wsgi_app def __call__(self, environ, start_response): print("开始之前") # 可以在开始前搞点小动作 ret = self.old_wsgi_app(environ, start_response) print("结束之后") # 可以在开始后搞点小动作 return ret
if __name__ == ‘__main__‘: app.wsgi_app = MyMiddleware(app.wsgi_app) app.run()
CBV
Bulepoint
flask的请求扩展、自定义中间件、CBV、蓝图(Blueprint)
原文:https://www.cnblogs.com/csic716/p/12528658.html