python本地上下文

flask提供了两种上下文:
1.请求上下文(request,session)
2. 程序上下文(current_app,g),
3. 这些变量的实际对象是本地代理(local proxy),所以被称为本地上下文(context local)

上下文全局对象

1.两个错误的信息
_request_ctx_err_msg
_app_ctx_err_msg

2.查找请求上下文对象
def _lookup_req_object(name):
top = _request_ctx_stack.top
if top is None:
raise RuntimeError(_request_ctx_err_msg)
return getattr(top, name)

3.查找程序上下文对象
def _lookup_app_object(name):
top = _app_ctx_stack.top
if top is None:
raise RuntimeError(_app_ctx_err_msg)
return getattr(top, name)

4.查找程序实例
def _find_app():
top = _app_ctx_stack.top
if top is None:
raise RuntimeError(_app_ctx_err_msg)
return top.app

5.两个堆栈
_request_ctx_stack = LocalStack() # 请求上下文堆栈
_app_ctx_stack = LocalStack() # 程序上下文堆栈

6.四个全局上下文代理对象
current_app = LocalProxy(_find_app)
request = LocalProxy(partial(_lookup_req_object, “request”))
session = LocalProxy(partial(_lookup_req_object, “session”))
g = LocalProxy(partial(_lookup_app_object, “g”))

在web开发过程中我们从flask包直接导入的request和session就是定义在这里的全局对象,这两个对象是对实际的request变量和session变量的代理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值