[英]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:
爭取一點。 那里很困惑。 如果有很多問題,我深表歉意,但是我很新,很迷茫。 我看了一些PHP會話教程,但進展不大。
感謝您提前提出任何答案。
這只是將self.request
的當前值作為get_store的“ request”關鍵字參數傳遞。 我不知道該問題的第二部分意味着什么。
這只是確保即使try塊內(即,您的處理程序代碼內)發生異常,也會始終執行finally塊,因此會話存儲將始終被保存。
您應該與會話ID無關。 它們是完全不透明的。 它們只是與用戶存儲在其Cookie中的ID相關。 但是與用戶的關系則相反。 就像我在上一個問題中所說的那樣,您將在用戶登錄時將User記錄的db ID存儲在會話中。
問題1和2實際上都是標准的Python。 通過閱讀語言教程,您可能會受益。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.