其他分享
首页 > 其他分享> > cookie、session的应用与Django中间件介绍

cookie、session的应用与Django中间件介绍

作者:互联网

cookie、seesion的应用与Django中间件介绍

cookie与session简介

HTTP协议四大特性
	1.给予请求响应
	2.基于TCP、TP作用于应用层之上的协议
	3.无状态
	服务器端无法识别客户端状态的状态
		1.互联网刚开始兴起的时候所有人访问网站都是一样的数据,服务器无法识别客户端,只是给出我这个该有的东西几乎不做交互
		2.在之后的发展中互联网渐渐需要和人频繁交互并需要记住用户状态,那么仅仅做出内容就不太够使用了,需要与用户进行交互,但是每次交互如果都需要账号密码来登录的话,也会很烦,所以就诞生了coookie与session应运而生。例如:淘宝,京东,B站等一系列应用。
	4.无连接

django操作cookie

1.如果想让客户端浏览器保存Cookie那么就需要HttpResponse对象调用方法
return HttpResponse()
return render()
return redirect()
return JsonRepsibse()

设置Cookie需要变形
obj = HttpResponse()
obj.操作Cookie的方法
return obj

obj = render()
obj.操作Cookie的方法
return obj

obj = redirect()
obj.操作Cookie的方法
return obj

obj = JsonRepose()
obj.操作Cookie的方法
return obj

2.登录设置Cookie
3.多个视图函数都需要校验用户是否登录
装饰器
4.如何记住用户登录之前想要访问的页面,用户登录成功之后自动跳转
	场景一:访问了其他需要登录才可以访问的页面  如何转跳>>>:想要访问的页面
	场景二:用户直接访问登录页面  如何转跳>>>:网址首页
		print(request.path)
		print(request.path_info)
		print(request.get_full_path())

Django操作session

1.请求在来之后服务端产生随机字符串并发送给客户端保存,服务端存储随机字符串与用户信息的对应关系,之后客户端携带随即字符串服务自动校验
2.Django默认的session失效时间为14天
3.客户端会自己而受到键值对,键默认是sessionid值是加密的随即字符串(令牌)
	def set_session(request):
		request.session['name'] = 'joseph'
		return HttpResponse('设置session')
		1.Django自动产生一个随即字符串返回给客户端(对name进行加密处理)
		2.往dajngo_session创建数据(对joseph进行加密处理)
	def get_session(request):
		print(request.session.get('name'))
		return HttpResponse('获取session')
		1.自动从请求中回去sessionid对应的随机字符串
		2.拿着随即字符串去django_session中匹配数据
		3.如果匹配上还会自动解密数据并展示

4.session的存储位置可以有五种模式
	数据库
	缓存数据库
	文件
	缓存+数据库
	加密

5.session其他操作
	# 删除当前会话的所有Session数据
	request.session.delete()
	# 删除当前的回话数据邴珊初会话的Cookie
	request.session.flush()
	# 设置回话Session和Cookie的超时时间
	request.Session.set_expiry(value)
		如果value是个整数那么session会在有些秒数后失效
		如果value是个datatime或timedelta,session就会在这个时间后失效
		如果value是个0,那么用户关闭浏览器session就会失效
		如果value是None,session会依赖全局session失效策略

Django中间件介绍

Django中间件类似于Django的门户,所有的请求来和响应走的时候都必须要经过中间件
Django默认自带七个中间件,也就是我们配置文件中的MIDDLEWARE = []内部的中间件,每个中间件都有各自负责的功能
Django中间件除了默认的之外还支持自定义中间件(无限个)
Django中间件的使用场景:
	全局相关的功能:
		全局用户身份证,全局用户黑名单校验,全局用户范文频率校验

Django中间件需要掌握的方法

Django自定义中间件中有五个方法:
	process_request
	process_response
	process_view
	process_template_response
	process_exception

Django中间件需要了解的方法

1.process_request
	1.请求来的时候会按照配置文件中注册了的中间件,从上往下依次执行每一个中间件里面的pricess_request方法,如果没有则直接跳过
	2.该方法如果反悔了HttpResponse对象,那么请求不会再往后执行,原路返回
2.process_response
	1.想赢走的时候会按照配置文件中注册了的中间件,从下往上执行每一个中间件里面的process_response方法,没有则直接跳过
	2.该方法有两个形参request和response,并且默认情况下应该返回response
	3.该方法也可以自己返回HttpResponse对象,相当于狸猫换太子
	4.如果请求过程中,process_request方法直接反悔了HttpResponse对象那么会原地执行同级别的process_response方法返回
3.process_view
	当前路由匹配成功之后,执行视图函数之前自动触发
4.process_excpyion
	当视图函数报错之后自动触发
5.process_template_response
	当视图函数返回的数据对象中含有render属性对应render函数才会被触发

标签:process,request,中间件,Django,session,Cookie
来源: https://www.cnblogs.com/joseph-bright/p/16686478.html