码迷,mamicode.com
首页 > 编程语言 > 详细

关于python+django的又一坑,请python班的同学进来看

时间:2015-11-17 17:06:08      阅读:291      评论:0      收藏:0      [点我收藏+]

标签:django   python   

事情是这样的。

在使用django1.6+的时候,默认会吧session存放在数据库django_session表里。

如果要把session放在内存中,就应该在settings.py 中配置

SESSION_ENGINE = "django.contrib.sessions.backends.cache"


使用的时候:

新增:request.session["userName"] = "Tom"

查询:name = request.session["userName"]

删除:del request.session["userName"]


好,那更复杂一点的数据该如何存储呢:比如一个对象Student。

按照其他语言的习惯,比如java和C#,按理说应该是:

stu = Student(name="Tom",age = 12)

新增:request.session["user"] = stu

查询:stu = request.session["user"]

删除:del request.session["user"]


存放对象的时候,如果session是存放在内存中,那么是没有问题的。但是一旦存放在数据库中就不行了。

为何?

因为存放在数据库中的东西,是需要能够进行json序列化的。

Student是不能被序列化json的。需要把Student转换为字典,没错,是字典。

{“name”:“Tom”,“age”:12}

这样才能存放在数据库session中。



另外,如果stu是一个对象。那么执行下列语句:

print(“1111111”)

request.session["user"] = stu

print(“2222222”)


输出是

111111

222222


这说明,session的新增操作是用了多线程,并不会阻止222222的输出,但是在http请求的时候,会报stu不可以被json序列化的错误。坑点,要注意。

 

交流专业、技术问题等加Python交流群:338985564


原文地址:http://www.maiziedu.com/group/article/8361/?yy=tb0408

关于python+django的又一坑,请python班的同学进来看

标签:django   python   

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
麦子学院
加入时间:2015-07-08
  关注此人  发短消息
文章分类
麦子学院”关注的人------(0
麦子学院”的粉丝们------(0
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!