flask_context
定义全局的钩子函数
有的时候在处理请求之前和之后,执行某些特定的代码是很有用的,这就用到了请求钩子
例如在请求之前创建数据库连接或者redis连接;或者是系统里面用户请求处理之前先验证用户的身份,是否激活,激活执行什么操作,没激活用户一直绑到固定页面去直到激活
为了避免每个试图函数中都使用重复的代码,flask提供了注册通用函数的功能;
也就是说只要写一个请求钩子-函数,整个程序实例全局都被应用了。
例如:在所有请求之前先验证下用户的认证状态
1 2 3 4 5 6 | @before_app_request def before_request(): if current_user.is_authenticated: current_user.ping() if not current_user.confirmed and request.endpoint[: 5 ] ! = 'auth.' and request.endpoint ! = 'static' : return redirect(url_for( 'auth.unconfirmed' )) |
常见的4种钩子:
before_first_request:注册一个函数,在处理第一个请求之前运行
before_request:注册一个函数,每次请求之前运行
after_request:注册一个函数,没有未处理的异常抛出,每次请求之后运行
teardown_request:注册一个函数,有未处理的异常抛出,每次请求之后运行
在请求钩子和视图函数之间共享数据一般使用程序上下文g;
例如before_request处理程序可以从数据库中加载已登录用户,将其保存到g.user中,随后调用试图函数,试图函数再从g.user中获取用户
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性