我使用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('user'),但它导致另一个错误:
BadKeyError: Invalid string key user.
我怎样才能做到这一点?
最佳答案
Session对象和SessionModel彼此分离。 SessionModel仅存储会话的内容,无法像Session对象一样读取。
我觉得这是个坏主意,您应该找到另一种方式来存储/检索已登录用户的列表。此方法可能返回尚未删除的过期会话,并且可能确实很慢。
您要调用的方法是__decode_data。我认为这样会起作用:
for activesession in SessionModel.all():
data = Session._Session__decode_data(activesession.pdump)
logged_in.append(data['user'])