Django Session存数据报错解决办法和取数据的问题

本文档介绍了在Django Session中遇到的错误,特别是尝试存储普通对象时的序列化问题。解释了Django Session不存储纯对象,而使用JSON或pickle进行序列化的原因。同时,讨论了如何成功存储和提取数字、字符串、列表等基本类型数据,以及包含多个对象的复杂数据结构。
摘要由CSDN通过智能技术生成

Django Session存对象时

1 当存储普通对象时(Plain Object),提示错误

在StackOverflow上找到出错的原因,原文和翻译如下

原文:
这里写图片描述

翻译:
django中的会话不存储在服务器内存中,因此它们不能包含纯对象。 它们被序列化为可以存储在一些存储后端(数据库,缓存,用户cookie等)中的字符串。

默认情况下,django为会话使用JSON序列化。 JSON序列化程序不能序列化对象。
django中还有另一个序列化程序:pickle。 它可以序列化几乎任何你可以在python中创建,但它有一些缺点。 它更慢,当与任何不受信任的会话存储(如cookie)一起使用时,它可能变得非常严重的安全漏洞,因为它将允许攻击者运行任何代码,只是通过交换序列化的数据。 有关详细信息,请参阅Django docs。

此外,反序列化的pickle将只是尝试重新创建对象状态从它被序列化。 这个对象不会被保存在内存中,所以考虑如果反序列化它从pickle比从头重新创建它更好(像你以前)。

2 存储数字,字符串,列表等可以序列化的基本类型时不报错

在Django官方文档中给出了解释

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值