使用 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()
返回会话以便可以使用里面的数据
我不知道的:
get_store()
函数中的request=self.request
是什么?商店不能是存储会话的服务器数据库中的一般商店吗?
try,finally:
位有什么用。那里很困惑。
- 我们是否需要明确地担心会话 ID。我将如何使用会话 ID 映射到数据库中的用户信息。是否每个用户都有一个对应的唯一会话 ID。
如果有很多问题,我深表歉意,但我很新,很迷茫。我看了一些 PHP 课程教程,但没有取得太大进展。
提前感谢您的回答。
这只是将 self.request
的当前值作为 get_store 的 "request" 关键字参数传递。我不知道那个问题的第二部分是什么意思
这只是确保即使在 try 块内(即在您的处理程序代码内)发生异常,finally 块也将始终执行,因此会话存储将始终被保存。
您应该与会话 ID 没有任何关系;它们是完全不透明的。它们仅与用户存储在其 cookie 中的 ID 相关。但是与用户的关系是相反的;正如我在上一个问题中所说的,当用户登录时,您将在会话中存储用户记录的数据库 ID。
问题 1 和问题 2 都非常标准 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()
返回会话以便可以使用里面的数据
我不知道的:
get_store()
函数中的request=self.request
是什么?商店不能是存储会话的服务器数据库中的一般商店吗?try,finally:
位有什么用。那里很困惑。- 我们是否需要明确地担心会话 ID。我将如何使用会话 ID 映射到数据库中的用户信息。是否每个用户都有一个对应的唯一会话 ID。
如果有很多问题,我深表歉意,但我很新,很迷茫。我看了一些 PHP 课程教程,但没有取得太大进展。
提前感谢您的回答。
这只是将
self.request
的当前值作为 get_store 的 "request" 关键字参数传递。我不知道那个问题的第二部分是什么意思这只是确保即使在 try 块内(即在您的处理程序代码内)发生异常,finally 块也将始终执行,因此会话存储将始终被保存。
您应该与会话 ID 没有任何关系;它们是完全不透明的。它们仅与用户存储在其 cookie 中的 ID 相关。但是与用户的关系是相反的;正如我在上一个问题中所说的,当用户登录时,您将在会话中存储用户记录的数据库 ID。
问题 1 和问题 2 都非常标准 Python;您可能会从学习语言教程中受益。