flask 的current_app
Flask 应用对象app具有config的属性,这些属性对于在视图或者在命令调试中访问很方便。但是现在项目的模块导入app 实例会容易出现循环导入的问题
Flask 通过应用情景解决了这个问题,不是直接引用一个app,而是使用current_app 代理,该代理指向处理当前活动的应用;
应用情景是指,在上下文中访问某些变量才有意义,在上下文外面访问无效;如在路由外访问current_app,会报runtimeError 错

在路由中使用是正常的

flask 还有应用上下文,对Flask核心对象的封装,提供了一些好用的方法,这样上下文除了核心对象还可以包含其它的数据和操作;
请求上下文是对Request请求对象的封装;
AppContext RequestContext,通过结构很方便查找到;
分别都实现了push和pop等方法;
app 和 Request() 对象只是其中的一个属性;
应用上下文,获取应用数据需要具备的环境;
请求上下文,获取请求数据需要具备的环境;
在测试的时候,未在路由中使用app对象会报错,但通过上下文获取就可以。即AppContext 和 RequstContext 这两个对象是通过current_app 和 request 获取的;
例子,管理其它的数据和操作

上下文管理器用于解决外部环境依赖
如:在视图函数里面获取请求参数,有三种方法
1、直接传递参数

2、通过全局变量
缺点:多个线程同时请求程序访问这些变量时势必会互相影响,但不设置为全局变量,那在编写代码时每次都要显式滴传递这些变量也容易出错
3、通过上下文来管理外部参数

有更好的建议,欢迎留言啊~

浙公网安备 33010602011771号