Flask请求扩展与g对象
请求扩展
1 before_request
任意一次请求来了,都会执行这个装饰器装饰的函数(与Django中process_request类似)
@app.before_request def before_request(): print('请求来了')
2 after_request
任意一次请求走了,就会执行这个装饰器装饰的函数(与Django中process_response类似)
@app.after_request def after_request(response): print('请求走了') return response
3 before_first_request(Flask新版本已去除)
在第一次请求时
teardown_request
每一个请求之后绑定一个函数,即使遇到了异常。
一般用来记录日志
不能做统一异常处理
@app.teardown_request def teardown_request(e): # 通过判断e是否为空,记录日志 print(e) # 出了异常,e就是异常对象,如果没有异常,e就是None print('来了老弟') if e: return '出异常了'
4 errorhandler
监听http响应码:只要响应码对应,就会执行对应的函数
路径不存在时404,服务器内部错误500
@app.errorhandler(404) def error_404(error): print('----',error) return render_template('404.html') @app.errorhandler(500) def error_500(error): print('----',error) return render_template('500.html')
5 template_global全局标签
# template_global 全局标签,所有页面都可以用 @app.template_global() def add(a1, a2): return a1 + a2
5 template_filter全局过滤器
# template_filter 全局过滤器 @app.template_filter() def db(a1, a2, a3): print(a1) return a1 + a2 + a3
g对象
作用
g对象是 global 全局的意思。每次发送请求,这个g会一直存在,可以设置值和取值
g本质是为了避免request对象放值导致的数据污染问题,以后都用g放入值和使用
使用
# 导入 from flask import Flask, g app = Flask(__name__) app.secret_key = 'asdfasdf' @app.before_request def before(): # jwt认证---》认证通过--》request.user=当前登录用户 # g.user=当前登录用户 request.methods='张三' g.name = '张三' # 放入了 @app.after_request def after(response): print('----', g.name) return response def showName(): print('showName', g.name) @app.route('/', methods=['GET']) def index(): # 取出g中得值 print(g.name) showName() return '欢迎你' if __name__ == '__main__': app.run()
本文来自博客园,作者:wellplayed,转载请注明原文链接:https://www.cnblogs.com/wellplayed/p/18052715
标签:
flask
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现