前面我们已经学过了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,那么会话永不过期。