2011-02-18 27 views
1

我做了一個簡單的登錄系統gae-sessions,我想顯示登錄的用戶有多少用戶登錄以及他們是誰。使用gae-sessions檢索存儲在其他會話中的信息

要計算登錄的人數,當我登錄用戶時,我立即使用save(persist_even_if_using_cookie = True)將會話保存到數據存儲區。然後我使用SessionModel.all()。count()來檢索已登錄帳戶的數量。

雖然我在其他會話中檢索信息時遇到了問題。我不知道該怎麼做。我嘗試這樣做:

logged_in = [] 
for activesession in SessionModel.all(): 
    logged_in.append(activesession['user']) 

但我發現了這個錯誤:

TypeError: 'SessionModel' object is unsubscriptable 

我也試過activesession.get( '用戶'),但它會導致另一個錯誤:

BadKeyError: Invalid string key user. 

我該怎麼做?

+0

爲什麼你不能只說len(SessionModel.all())而忘記重複會話? – 2011-02-18 16:01:53

+0

您是否指代了一段代碼來獲取數據存儲中會話的數量? count()不像len()那樣返回一個整數嗎? – 2011-02-18 16:10:32

回答

2

Session對象和SessionModel是相互獨立的。 SessionModel只存儲會話的內容,它不能像Session對象那樣讀取。

我有一種感覺,這是一個壞主意,你應該找到另一種方式來存儲/檢索登錄用戶列表。此方法可能會返回尚未刪除的過期會話,並且可能會非常慢。

你想調用的方法是__decode_data。我認爲這樣的事情會起作用:

for activesession in SessionModel.all(): 
    data = Session._Session__decode_data(activesession.pdump) 
    logged_in.append(data['user']) 
相關問題