首页 > 解决方案 > 无法在 django 视图的请求会话中存储字典或对象

问题描述

我正在尝试在一个视图中设置会话并在另一个视图中阅读此会话。试图在会话中存储字典。

request.session['staffdict'] = staffdict

当我尝试从第二个视图的会话中获取字典时:

staffdict = request.session.get('staffdict')

我得到以下错误:

Django 版本:2.2.6 异常类型:TypeError 异常值:
“UUID”类型的对象不是 JSON 可序列化异常位置:默认为 /usr/lib/python3.6/json/encoder.py,第 180 行 Python 可执行文件:/usr /local/bin/uwsgi Python 版本:3.6.8

标签: pythondjangodjango-viewsdjango-sessions

解决方案


我使用 pickle 的 dumps() 和 load() 函数,并将这些方法中的字节对象转换为十六进制,如下所示:

import pickle
dict = {'s':'string', 'i':1}
hexdict = pickle.dumps(dict).hex()

# the above hexdict should be JSON OK

dict2 = pickle.loads(bytes.fromhex(hexdict))
print(dict2)

推荐阅读