请求扩展
before_request:请求来了会走,依次从上往下执行,但是如果其中一个返回了响应对象,后续就不走了,视图函数也不走
after_request: 请求走了,会从下往上依次执行,必须返回相应对象
假设:
写了3个before_request 第二个返回了响应对象
写了3个after_request 所有的after_request都会执行,从下往上
使用场景:
before_request 做一些拦截,判断
比较校验请求头中是否带token,user-agent
after_request在响应中加入
响应头中
响应cookie
修改相应体
before_first_request 老版本:新版本没有了,项目启动后第一次执行,后面就再不执行了
teardown_request
每个请求之后绑定一个函数,即使遇到异常
@app.teardown_request def lqz(err): print(err) # 如果视图函数正常顺利运行,err是None的,如果视图函数出错了,err就是错误对象,一般用来做日志记录 print('teardown_request')
errorhandler
路径不存在时404,服务器内部错误500
@app.errorhandler(404) # 路径不存在 def error(arg): print('xxx') print(arg) return render_template('404.html')
@app.errorhandler(500) # 服务器内部错误 def error(arg): return render_template('500.html')
标签:
temple_global
@app.template_global() def sb(a1, a2): return a1 + a2 #{{sb(1,2)}}
过滤器:
template_filter
@app.template_filter() def db(a1, a2, a3): return a1 + a2 + a3 #{{ 1|db(2,3)}}
蓝图
blueprint 翻译过来的:flask是要做成项目,放到多个文件夹中,使用蓝图划分目录
不使用蓝图划分目录:
标签:return,app,request,template,Falsk,def,before From: https://www.cnblogs.com/YeeQX/p/17844359.html