che*_*nge 8 python werkzeug flask
谁有人解释这条线?
g = LocalProxy(lambda: _request_ctx_stack.top.g)
Run Code Online (Sandbox Code Playgroud)
来自烧瓶的代码
from werkzeug import LocalStack, LocalProxy
# context locals
_request_ctx_stack = LocalStack()
current_app = LocalProxy(lambda: _request_ctx_stack.top.app)
request = LocalProxy(lambda: _request_ctx_stack.top.request)
session = LocalProxy(lambda: _request_ctx_stack.top.session)
g = LocalProxy(lambda: _request_ctx_stack.top.g)
Run Code Online (Sandbox Code Playgroud)
Local的代码在这里:http: //pastebin.com/U3e1bEi0
LocalStack 和 LocalProxy 的Werkzeug文档以及对WSGI的一些基本了解可能会有所帮助。
看起来正在发生的事情是_request_ctx_stack创建了一个全局(但空)堆栈。这适用于所有线程。一些 WSGI 样式对象(current_app、request、session和g)被设置为使用全局堆栈中的顶部项目。
在某一时刻,一个或多个 WSGI 应用程序被推送到全局堆栈上。然后,例如current_app在运行时使用时,将使用当前的顶级应用程序。如果堆栈从未初始化,则 top 将返回 None 并且您将得到类似的异常AttributeError: 'NoneType' object has no attribute 'app'。
| 归档时间: |
|
| 查看次数: |
3888 次 |
| 最近记录: |