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