Python,Django会话,如何通过键更新Django会话

bvk5enib  于 2023-08-08  发布在  Go
关注(0)|答案(2)|浏览(125)

我尝试更新会话数据
我的代码:

try:
        s = Session.objects.get(session_key=token)
    except ObjectDoesNotExist:
        return 400, {"error": "Token invalid."}

    newObject = {'user_pk': 3, 'company_id': 55}
    s['user_login_info'] = newObject
    s.save()

字符串
但我得到错误TypeError: 'Session' object does not support item assignment
如何正确更新会话数据?

7dl7o3gd

7dl7o3gd1#

取自下面的来源。
关键是session_data是一个pickle字典。Session Middleware负责反序列化和序列化,作为一种方便,但是由于您没有使用它,因此您必须自己完成额外的部分。

d = s.get_decoded()
d['user_login_info'] = newObject
s.session_data = d
s.save()

字符串
Source

v9tzhpje

v9tzhpje2#

第一应答的这种修改应该更新会话数据:

d= s.get_decoded()
d['user_login_info'] = newObject
s.session_data = SessionStore().encode(d)
s.save()

字符串

相关问题