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

时间:2018-06-11 15:19:21

标签: python python-3.x flask web-frameworks

阅读文档我明白烧瓶定义了一个类flask.session。

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

from flask import Flask, session

app = Flask(__name__)

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

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

from flask import Flask, session

app = Flask(__name__)
s = session() # so s is an instance of the flask.session class

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

我也想知道这是否与会话代理有关,正如文档中所述。我阅读了关于代理的注释'但是不太了解。

1 个答案:

答案 0 :(得分:0)

很棒的问题。

它在烧瓶function() { var id = {{GA-COOKIE}}; var aux; aux = id.split("."); return aux[2]+"."+aux[3]; }

中初始化

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

globals.py

因此,当您从刻录机导入时,您从其session = LocalProxy(partial(_lookup_req_object, 'session')) 包中导入,该会话从__init__.py拉出会话并初始化它。您直接导入它时会获取对它的引用。

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