django中间件以及解决csrf

  一.中间件,顾名思义,是介于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 %}

原文地址:https://www.cnblogs.com/xiaocaiyang/p/10315059.html