django之session
Posted cage0515
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django之session相关的知识,希望对你有一定的参考价值。
HTTP协议是无状态的:
? 每次请求都是一次新的请求,不会记得之前通信的状态
? 客户端与服务器端的一次通信,就是一次会话
? 实现状态保持的方式:在客户端或服务器端存储与会话有关的数据
? 状态保持的目的是在一段时间内跟踪请求者的状态,可以实现跨页面访问当前请求者的数据
? 不同的请求者之间不会共享这个数据,与请求者一一对应
Cookie
? 存储在用户的浏览器中,用户提交的数据具有‘欺骗性‘,所以cookie不是很安全
?单个cookie保存的数据不能超过4K
Session
? 存储在服务器(文件,数据库,缓存|内存)
? 每一个数据产生一个key session_id 就存储在浏览器的cookie
? 数据存在服务器,不容易被暴露信息,比cookie更安全.
cookie:包括名字,值,过期时间,路径和域;
①.会话cookie:如果cookie不设置过期时间,则会话cookie会被保存在浏览器内存中,生命周期为浏览器会话期间,当关闭浏览器时,cookie就会被删除.
②.持久cookie:设置了过期时间的cookie会被保存在硬盘里,关闭浏览器后再次打开cookie依然有效,直到超过有效时间
Session:客户端浏览器访问服务器,服务器检查会话是否已有sessionid,没有则新建一个唯一不重复的sessionid,在本次响应中返回给客户端cookie里保存起来.
Session是用Sessionid来确定当前对话所对应的服务器Session,而Sessionid是通过Cookie来传递的,禁用Cookie相当于失去了Sessionid,也就得不到Session了。当cookie被禁用时,可以使用URL重写,将sessionid附加在URL路径的后面;或者给表单添加一个input设置为hiddle,将value的值设置为sessionid,提交到后台服务器.
使用cookie
# 获取当前的 响应对象
response = HttpResponse(‘cookie的设置‘)
# 使用响应对象进行cookie的设置
response.set_cookie(‘a‘,‘abc‘)
# 返回响应对象
return response
获取cookie
a = request.COOKIES.get(‘a‘,None)
session的设置方法:
request.session[‘键’]= {}或=字符串
request.session[‘VIPUser’] = {“uid”:”10086”,”name”:”张三”}
request.session[‘admin’] = ‘aabbcc’
session的获取方法:
request.session.get(‘VIPUser’)
request.session.get(‘admin’)
session的删除方法
删除单个key
del request.session[‘a’]
清除所有会话,但不会删除数据
request.session.clear()
删除当前的会话数据
request.session.flush()
设置session10秒后过期
# request.session[‘abc‘] = ‘abcdef‘
# request.session.set_expiry(10)
以上是关于django之session的主要内容,如果未能解决你的问题,请参考以下文章