2015-11-25 23 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網絡開發的最佳選擇。 –