烧瓶:'会话'与'g'?

Avi*_*ohn 47 python session flask

我试图理解之间的功能和用途的不同gsession.两者都是"挂起"会话数据的对象,对吗?如果是这样,那么差异究竟是什么,我应该在哪些情况下使用哪一个?

Mar*_*ers 55

不,g不是一个物体挂在会话数据.g请求之间不会保留数据.

session为您提供了存储每个特定浏览器数据的位置.作为Flask应用程序的用户,使用特定浏览器返回更多请求,会话数据将在这些请求中传递.

g另一方面,一个请求周期内,代码库的不同部分之间共享数据.g可以在before_request挂钩期间设置,在teardown_request阶段期间仍然可用,并且一旦请求完成并发送到客户端,g就会被清除.

  • 那么`session`是'每个客户'的数据(基于cookie?)和`g`是每个请求数据? (7认同)
  • @AvivCohn:确切地说.`g`的优点是它存在于您的所有请求中,是线程安全的,并且特定于您当前的应用程序(如果您要*nest*Flask应用程序,其中一个调用另一个,这变得很重要).因此,您可以使用`before_request`挂钩设置用户对象或数据库连接,然后访问模板中的同一用户或连接,并且仍然可以在拆解挂钩中使用,而无需将其传递给每个调用. (6认同)