请求扩展
一、before_request
类比django中间件中的process_request,在请求收到之前绑定一个函数做一些事情
#基于它做用户登录认证 @app.before_request def process_request(*args,**kwargs): if request.path == '/login': return None user = session.get('user_info') if user: return None return redirect('/login')
二、after_request
类比django中间件中的process_response,每一个请求之后绑定一个函数,如果请求没有异常
@app.after_request def process_response1(response): print('process_response1 走了') return response
三、befor_first_request
第一次请求时,跟浏览器无关
@app.before_first_request def first(): pass
四、teardown_request
每一个请求之后绑定一个函数,即使遇到了异常
@app.teardown_request def ter(e): pass
五、errorhandler
路径不存在时404,服务器内部错误500
@app.errorhandler(404) def error_404(arg): return "404错误了"
六、template_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)}}
八、总结
1 重点掌握before_request和after_request,
2 注意有多个的情况,执行顺序
3 before_request请求拦截后(也就是有return值),response所有都执行