cookies和session都是为了保持会话状态而诞生的两个存储技术




会话定义:



从打开浏览器访问一个网站,到关闭浏览器结束此次访问,称之为一次会话



HTTP协议是无状态的,导致会话状态难以保持




Cookies-定义



cookies是保存在客户端浏览器上的存储空间




python Django中的cookies和session会话保持技术_后端


Cookies特点


cookies在浏览器上是以键-值对的形式进行存储的,键和值都是一ASCLL字符串的形式存储(不能是中文字符串)


存储的数据带有生命周期


cookies中的数据是按域存储隔离的,不同的域之间无法访问


cookies的内部的数据会在每次访问此网址时都会携带到服务器端,如果cookies过大会降低响应速度。


Cookies的使用-存储



python Django中的cookies和session会话保持技术_session/cookies_02


存储示例



python Django中的cookies和session会话保持技术_session/cookies_03



python Django中的cookies和session会话保持技术_session/cookies_04



python Django中的cookies和session会话保持技术_后端_05



python Django中的cookies和session会话保持技术_django_06


案例:



python Django中的cookies和session会话保持技术_django_07


会话保持 - 登录流程



python Django中的cookies和session会话保持技术_python_08



session定义


session是在服务器上开辟一段空间用于保留浏览器和服务器交互时的重要数据


实现方式:


  •  使用session需要在浏览器客户端启动cookie,且在cookie中存储sessionnid
  • 每个客户端都可以在服务器端有一个独立的session
  • 注意:不同的请求者之间不会共享这个数据,与请求者一一对应


session初始配置


settings.py中配置session


1、向INSTALLED_APPS列表中添加:



python Django中的cookies和session会话保持技术_python_09


2、向MIDDLEWARE列表中添加:



python Django中的cookies和session会话保持技术_django_10


session的使用


session对像是一个类似与字典的SessionStore类型的对象,可以用类似于字典的方式进行操作。


session能够存储如字符串,整型,字典,列表等



python Django中的cookies和session会话保持技术_会话技术_11


settings.py中相关配置项



python Django中的cookies和session会话保持技术_会话技术_12


注意:Django中的session数据存储在数据中,所以使用session前需要确保已经执行过migrate


Django session的问题


1、django_session表是单表设计;且该表数据量持续增持【浏览器故意删掉sessionid & 过期数据为删除】


2、可以每晚执行python3 manage.py clearsessions 【该命令可删除已过期的session数据】



session与cookies对比


session把数据存在服务器上,cookies把数据存在浏览器上



python Django中的cookies和session会话保持技术_python_13