cookies和session都是为了保持会话状态而诞生的两个存储技术
会话定义:
从打开浏览器访问一个网站,到关闭浏览器结束此次访问,称之为一次会话
HTTP协议是无状态的,导致会话状态难以保持
Cookies-定义
cookies是保存在客户端浏览器上的存储空间
![](https://i-blog.csdnimg.cn/blog_migrate/6e06859567f8688e486a87076a844792.png)
Cookies特点
cookies在浏览器上是以键-值对的形式进行存储的,键和值都是一ASCLL字符串的形式存储(不能是中文字符串)
存储的数据带有生命周期
cookies中的数据是按域存储隔离的,不同的域之间无法访问
cookies的内部的数据会在每次访问此网址时都会携带到服务器端,如果cookies过大会降低响应速度。
Cookies的使用-存储
![](https://i-blog.csdnimg.cn/blog_migrate/28a31e0ee3096e344e3ec47643b828a7.png)
存储示例
![](https://i-blog.csdnimg.cn/blog_migrate/a80d49ccaf6ffd6cbc8da73dd21dcdf8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/05112373d60ea96fc625d09579dadbd1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/437ab9b754fd6f0117ce8eb1cae7855d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fe6414ccb8b2920b2e00e19056452839.png)
案例:
![](https://i-blog.csdnimg.cn/blog_migrate/2814b2ca5815d1d080a9510af2f683b0.png)
会话保持 - 登录流程
![](https://i-blog.csdnimg.cn/blog_migrate/a2b18658ebf4a2439f12c4f7608fb7d2.png)
session定义
session是在服务器上开辟一段空间用于保留浏览器和服务器交互时的重要数据
实现方式:
-
使用session需要在浏览器客户端启动cookie,且在cookie中存储sessionnid
-
每个客户端都可以在服务器端有一个独立的session
-
注意:不同的请求者之间不会共享这个数据,与请求者一一对应
session初始配置
settings.py中配置session
1、向INSTALLED_APPS列表中添加:
![](https://i-blog.csdnimg.cn/blog_migrate/2e5b0816a0cd8ef4631ff8a09860d819.png)
2、向MIDDLEWARE列表中添加:
![](https://i-blog.csdnimg.cn/blog_migrate/d3e2a1ca36a06bd941a02d1291f899ff.png)
session的使用
session对像是一个类似与字典的SessionStore类型的对象,可以用类似于字典的方式进行操作。
session能够存储如字符串,整型,字典,列表等
![](https://i-blog.csdnimg.cn/blog_migrate/459fc13c456eff1ed401c0a04a016c1b.png)
settings.py中相关配置项
![](https://i-blog.csdnimg.cn/blog_migrate/cf47eefc8a8afd2814eec5a989811bb3.png)
注意:Django中的session数据存储在数据中,所以使用session前需要确保已经执行过migrate
Django session的问题
1、django_session表是单表设计;且该表数据量持续增持【浏览器故意删掉sessionid & 过期数据为删除】
2、可以每晚执行python3 manage.py clearsessions 【该命令可删除已过期的session数据】
session与cookies对比
session把数据存在服务器上,cookies把数据存在浏览器上
![](https://i-blog.csdnimg.cn/blog_migrate/4fc21dadaeb61fe59b153a9c1e1a546d.png)