cookie与session
cookie与session
cookie
服务端保存在客户端浏览器上的信息都可以称之为cookie
session
数据是保存在服务端的
token
session虽然数据是保存在服务端的 但是禁不住数据量大
服务端不再保存数据
信息 + 加密后信息
浏览器下次访问的时候带着该信息 将信息加密,比对,只有服务端知道加密方式
总结:
1.cookie就是保存在客户端浏览器上的信息
2.session就是保存在服务端上的信息
3.session是基于cookie工作的(其实大部分的保存用户状态的操作都需要使用到cookie)
Cookie操作
request.COOKIE
客户端浏览器可以选择拒绝保存 那么网站登陆功能都无法使用
obj = HttpResponse对象
return obj
如果你想要操作cookie,你就不得不利用obj对象
设置cookie
obj.set_cookie(key,value)
获取cookie
request.COOKIES.get(key)
在设置cookie的时候可以添加一个超时时间
obj.set_cookie('username', 'jason666',max_age=3,expires=3)
max_age
expires
两者都是设置超时时间的 并且都是以秒为单位
需要注意的是 针对IE浏览器需要使用expires
主动删除cookie(注销功能)
obj.delete_cookie(key)
obj.set_signed_cookie(key,value,salt='盐')
request.get_signed_cookie(key,salt='盐')
session操作
>>> dict.keys()
dict_keys(['Name', 'Age'])
可以遍历,不可以索引
get方法:普通键值对,自定义的,,
session数据是保存在服务端的(存?),给客户端返回的是一个随机字符串
sessionid:随机字符串
在默认情况下操作session 需要django默认的django_session表
默认过期时间是14天
设置session
request.session['key'] = value
获取session
request.session.get('key')
得到的是固定浏览器的那一个
设置过期时间
request.session.set_expiry()
括号内可以放四种类型的参数
1.整数 秒
2.日期对象 指定日期
3.0 当前浏览器窗口关闭立刻失效
4.不写 session默认的失效时间
清除session
request.session.delete()
request.session.flush()
django_session表中的数据条数是取决于浏览器的
同一个计算机上(IP地址)同一个浏览器只会有一条数据生效
(当session过期的时候可能会出现多条数据对应一个浏览器,但是该现象不会持续很久,内部会自动识别过期的数据清除 也可以通过代码清除)
内部发送了那些事
1.django内部会自动帮你生成一个随机字符串
2.django内部自动将随机字符串和对应的数据存储到django_session表中
2.1先在内存中产生操作数据的缓存
2.2在响应结果django中间件的时候才真正的操作数据库
3.将产生的随机字符串返回给客户端浏览器保存
内部发送了那些事
1.自动从浏览器请求中获取sessionid对应的随机字符串
2.拿着该随机字符串去django_session表中查找对应的数据
3.如果比对上了 则将对应的数据取出并以字典的形式封装到request.session中
如果比对不上 则request.session.get()返回的是None
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现