2015-11-25 30 views
1

使用会话从webapp2 documentation我已经得到了下面的代码(不知道这是正确的):与webapp2的Python的

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会话教程,但没有取得多大进展。

感谢您提前提供任何答案。

回答

1
  1. 这只是传递的self.request的电流值作为用于get_store的“请求”关键字参数。我不知道这个问题的第二部分意味着什么。

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

  3. 你应该没有任何与会话ID有关的事情;它们是完全不透明的。它们只与用户在其Cookie中存储的ID相关。但与用户的关系是相反的;因为我对你的最后一个问题说,你就当他们登录的用户记录的数据库ID存储在会议

两个问题1和2是真的只是标准Python。你可能会从语言教程中受益。

+0

感谢您的帮助......我现在都在工作。我将学习更多的语言,它似乎是开始GAE网络开发的最佳选择。 –