为什么不需要实例化flask会话对象?

2024-04-27 04:42:27 发布

您现在位置:Python中文网/ 问答频道 /正文

通过阅读文档,我了解到flask定义了一个类烧瓶.会话. 在

让我困惑的是,当人们使用它时,他们不会实例化session类的对象,而是直接使用session,如下面的代码所示:

from flask import Flask, session

app = Flask(__name__)

@app.route('/')
def index():
    session['key'] = 'value'

我不明白为什么代码不应该看起来像这样:

^{pr2}$

我还想知道这是否与session作为代理有关,就像文档中所说的那样。我读了“代理人须知”,但不太明白。在


Tags: 对象实例代码namefrom文档importapp
1条回答
网友
1楼 · 发布于 2024-04-27 04:42:27

好问题。在

它在烧瓶中初始化globals.py

https://github.com/pallets/flask/blob/master/flask/globals.py

session = LocalProxy(partial(_lookup_req_object, 'session'))

所以当您从flask导入时,您从它的包__init__.py导入,该包从globals.py提取会话并初始化它。当您直接导入它时,您会获取对它的引用。在

我应该澄清,会话本身不是一个类。它是LocalProxy类的一个实例,它是请求上下文的代理。在

相关问题 更多 >