赞
踩
前面我们已经学过了cookie,cookie是存放在本地的,而session和cookie最大的不同是,cookie存放在浏览器上,而cookie存放在服务端
session是依赖于cookie的,当浏览器设置session时,服务端会让浏览器通过cookie设置一个sessionid,浏览器访问服务器时通过sessionid来获得保存在服务端相应的session信息(这个过程不用手动操作,django框架会帮你做)
每次请求时浏览器都会将这个数据发给服务器,服务器在接收到sessionid后,会根据这个值找出这个请求者的Session。
结果:如果想使用Session,浏览器必须支持Cookie,否则就无法使用Session了
即当本地的cookie被删除,浏览器就不能获得服务端的session信息
设置和使用session都是通过request.session
属性进行获得
和cookie不同的是,cookie保存进去的不管是什么数据类型,取出来的都是字符串类型的
而session保存的是什么 类型的取出来就是什么类型
存储方式
打开test3/settings.py文件,设置SESSION_ENGINE项指定Session数据存储的方式,可以存储在数据库、缓存、Redis等。
1)存储在数据库中,如下设置可以写,也可以不写,这是默认存储方式。
SESSION_ENGINE='django.contrib.sessions.backends.db'
2)存储在缓存中:存储在本机内存中,如果丢失则不能找回,比数据库的方式读写更快。
SESSION_ENGINE='django.contrib.sessions.backends.cache'
3)混合存储:优先从本机内存中存取,如果没有则从数据库中存取。
SESSION_ENGINE='django.contrib.sessions.backends.cached_db'
对象及方法
通过HttpRequest对象的session属性进行会话的读写操作。
1) 以键值对的格式写session。
request.session['键']=值
2)根据键读取值。
request.session.get('键',默认值)
3)清除所有session,在存储中删除值部分。
request.session.clear()
4)清除session数据,在存储中删除session的整条数据。
request.session.flush()
5)删除session中的指定键及值,在存储中只删除某个键及对应的值。
del request.session['键']
6)设置会话的超时时间,如果没有指定过期时间则两个星期后过期。
request.session.set_expiry(value)
如果value是一个整数,会话将在value秒没有活动后过期。
如果value为0,那么用户会话的Cookie将在用户的浏览器关闭时过期。
如果value为None,那么会话永不过期。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。