使用 WebApp2 的会话 Python

Using Sessions with WebApp2 Python

webapp2 documentation 我得到了以下代码(不确定它是否正确):

import webapp2

from webapp2_extras import sessions

class BaseHandler(webapp2.RequestHandler):
    def dispatch(self):
        self.session_store = sessions.get_store(request=self.request)
        try:
            webapp2.RequestHandler.dispatch(self)
        finally:
            self.session_store.save_sessions(self.response)

    @webapp2.cached_property
    def session(self):
        return self.session_store.get_session()

class Login(BaseHandler):
    def get(self):

        self.session['foo'] = 'bar'
        foo = self.session.get('foo')

我只是想在用户登录后创建一个基本的登录会话。但我已经研究了很长时间,但没有成功。

我觉得是怎么回事:

    self.session_store = sessions.get_store(request=self.request)

获取会话存储,我将在其中存储用户所需的数据

    try:
        webapp2.RequestHandler.dispatch(self)
    finally:
        self.session_store.save_sessions(self.response)

正在更新会话存储?这里不完全确定。

@webapp2.cached_property
def session(self):
    return self.session_store.get_session()

返回会话以便可以使用里面的数据

我不知道的:

如果有很多问题,我深表歉意,但我很新,很迷茫。我看了一些 PHP 课程教程,但没有取得太大进展。

提前感谢您的回答。

  1. 这只是将 self.request 的当前值作为 get_store 的 "request" 关键字参数传递。我不知道那个问题的第二部分是什么意思

  2. 这只是确保即使在 try 块内(即在您的处理程序代码内)发生异常,finally 块也将始终执行,因此会话存储将始终被保存。

  3. 您应该与会话 ID 没有任何关系;它们是完全不透明的。它们仅与用户存储在其 cookie 中的 ID 相关。但是与用户的关系是相反的;正如我在上一个问题中所说的,当用户登录时,您将在会话中存储用户记录的数据库 ID。

问题 1 和问题 2 都非常标准 Python;您可能会从学习语言教程中受益。