Session
在web开发的过程中,对于敏感重要的信息,一般来说需要存储在服务端,比如用户信息,余额,等级,验证码等,
在服务端进行状态保持的方案就是 Session
启用session
django项目默认启用session 如果不需要使用可以注释此行
session存储方式
在setting中设置SESSION_ENGINE项指定Session数据存储的方式,可以存储在数据库、缓存、Redis等。
1)默认存储在配置的数据库中,可以不写
2)存储到内存中速度会比较快,但是容易丢失
3)混合内存和数据库存储
4)文件session
5)加密 session cookie
数据迁移后会在数据库中创建存储session的表 表中包括 键 值 过期时间
依赖于Cookie
所有请求者的Session都会存储在服务器中,服务器如何区分请求者和Session数据的对应关系呢?
答:在使用Session后,会在Cookie中存储一个sessionid的数据,每次请求时浏览器都会将这个数据发给服务器,服务器在接收到sessionid后,会根据这个值找出这个请求者的Session。
结果:如果想使用Session,浏览器必须支持Cookie,否则就无法使用Session了。
存储Session时,键与Cookie中的sessionid相同,值是开发人员设置的键值对信息,进行了base64编码,过期时间由开发人员设置。
使用session的操作 对象及方法
1)使用键值对的格式写 session request.session['key']=value
2)根据键 取 值 request.session.get('key', 默认值)
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,那么会话永不过期。