一.中间件,顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨慎使用,用不好会影响到性能.
怎么用:
自定义中间件:
1.写一个类,继承MiddlewareMixin,
2.在类中写方法:
precess_request
3.在settings中配置
5个方法 (process_request, process_response)
*****
process_request(self,request)
执行顺序,settings中中间件自上而下执行
请求来的时候会执行它
request对象,就是本次请求的request对象,对它处理后,视图函数拿到的就是处理后的request对象
process_view(self,request,callback,callback_args,callback_kwargs)
callback是视图函数,callback_args,callback_kwargs是视图函数的参数
可以调用callback方法
process_template_response(self,request,response)
只有视图函数返回的对象中有render方法的时候,才会执行
process_exception(self,request,exception)
视图函数出错,会执行它
*****
process_response(self,request,response)
执行顺序,settings中中间件自下而上执行
响应走的时候,会执行它
request对象,就是本次请求的request对象,response是响应对象(HttpResponse的对象)
如果process_request方法返回HttpResponse的对象,请求直接返回,按中间件方法执行顺序往回走
二.csrf
xss攻击/csrf或xsrf跨站请求伪造
使用:中间件不注释,form表单中写{% csrf_token %}