Django Session存数据报错解决办法和取数据的问题
来源:互联网 发布:北京网络职业学院招聘 编辑:程序博客网 时间:2024/05/16 16:20
Django Session存对象时
1 当存储普通对象时(Plain Object),提示错误
在StackOverflow上找到出错的原因,原文和翻译如下
原文:
翻译:
django中的会话不存储在服务器内存中,因此它们不能包含纯对象。 它们被序列化为可以存储在一些存储后端(数据库,缓存,用户cookie等)中的字符串。
默认情况下,django为会话使用JSON序列化。 JSON序列化程序不能序列化对象。
django中还有另一个序列化程序:pickle。 它可以序列化几乎任何你可以在python中创建,但它有一些缺点。 它更慢,当与任何不受信任的会话存储(如cookie)一起使用时,它可能变得非常严重的安全漏洞,因为它将允许攻击者运行任何代码,只是通过交换序列化的数据。 有关详细信息,请参阅Django docs。
此外,反序列化的pickle将只是尝试重新创建对象状态从它被序列化。 这个对象不会被保存在内存中,所以考虑如果反序列化它从pickle比从头重新创建它更好(像你以前)。
2 存储数字,字符串,列表等可以序列化的基本类型时不报错
在Django官方文档中给出了解释
其中说到“A wrapper around the JSON serializer from django.core.signing. Can only serialize basic data types. In addition, as JSON supports only string keys, note that using non-string keys in request.session won’t work as expected:”。就是说来自django.core.signing的JSON序列化程序的包装器。 只能序列化基本数据类型。此外,由于JSON仅支持字符串键,请注意,在request.session中使用非字符串键将无法正常工作:
从Session中取数据时
1 当我们在Session中存的是数字,字符串时,可以正常从Session取出数据
# 在func1中def func1(): request.session['table']=10# 在func2中 def func2(): val=request.session.get('table') # ok val=10
当我们在Session中存的是单个的列表,字典等,可以正常从Session取出数据
# 在func1中def func1(): d={'page':1,'articleType': 'news'} request.session['table']=d# 在func2中 def func2(): val=request.session.get('table') # ok val={'page':1,'articleType': 'news'}
当我们在Session中存的是包含多个对象的列表或者字典等,也是可以的
# 在func1中def func1(): d1={'page':1,'articleType': 'news'} d2={'page':2,'articleType': 'novel'} L=[d1,d2] request.session['table']=L# 在func2中 def func2(): val=request.session.get('table') # ok val=[{'page':1,'articleType': 'news'},{'page':2,'articleType': 'novel'}]
- Django Session存数据报错解决办法和取数据的问题
- 存数据和取数据
- javaweb之Session简单例子(两个页面一个存数据,一个取数据)和session的一些基本内容
- oracle数据库对blob类型数据的存和取
- django中保存数据到数据库中 拉丁字母 报错 乱码
- 解决用django创建网站时mysql插入中文数据报错的问题
- django框架 modelsg更改后的数据迁移报错问题
- 有session的取网页的数据
- django admin录入数据报错
- yii2框架session中保存和获取数据
- cookie中存、取json格式的数据
- xml文件,数据的存与取,PlayerPrefs
- MySQL基础教程14-Mysql插入中文数据报错的原因和解决办法
- JavaScript取Session中的数据
- Zend_Db_Table的按字段取数据问题和解决方法
- DWR 报错:Error: java.lang.SecurityException, Session Error 和 Allocate exception for servlet 问题的解决办法
- Struts2中的ValueStack-OgnlValueStack中的Context和Root存数据和取数据
- jsp页面从session和request域中取数据小结
- FFmpeg发送流媒体的命令(UDP,RTP,RTMP)
- WEB前端常见面试题
- Java库中的常用集合(Collection/List/Set/Map)
- TextWatcher接口的使用:监听EditText文字变动事件
- 固定电压可调电压稳压芯片LM2596
- Django Session存数据报错解决办法和取数据的问题
- 【转】理解CSS模块化
- GitHub入门与实践学习笔记--github学习基础之关于git的基本操作
- Android TextView disable颜色坑
- 文章标题
- windosw下安装matplotlib之痛
- UILabel根据内容获取宽高
- 【DP】【lis】【lcs】【合并石子】【背包问题】DP基础问题四则
- mybatis 一对一关系取值association 通过resultMap实现