我使用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'])

09-30 00:32