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的主要内容,如果未能解决你的问题,请参考以下文章

Django之session验证的三种姿势

django----session相关配置

Django-7

django项目 设置session 实现用户登入登出

tensorflow源码解析之common_runtime-session

14-Django-基础篇-状态保持