python—day63 中间件

复习知识:
from django.utils.decorators import method_decorator
这个是让装饰器能提供给类下面的函数使用的

@method_decorator
def foo():
  return ...

今日内容:
中间件:
1、如何自定义一个中间件:
  1.把按照格式要求写一个类
  2.把我们写好的类在settings.py注册到MIDDLEWARE配置项的列表中;

2、每一个中间件中五个可以被重写的方法:
  1.process_request(self,request):
    1.何时执行:
      在urls.py之前执行
    2.执行的顺序
      按照在列表中注册的顺序依次执行
    3.返回值
      1.返回None,不做任何处理直接进行下一步
      2.返回相应对象,直接跳出(后续中间件的process_request、不执行urls.py和view.py)返回响应;
  
  2.process_view(self,request,view_func,view_args,view_kwargs)
    1.执行时间
      在urls.py之后和在执行真正的视图函数之前
    2.执行顺序
      按照在列表中注册的顺序依次执行
    3.返回值
      1.返回None,放行
      2.返回响应对象,就直接跳出,倒序依次执行所有中间件的process_request方法

  3.process_template_request(self,request,response)
    执行:
      会在视图函数执行完之后执行,也就是需要有return render执行后他才会执行,或者表明他有个template_response对象; 

  4.process_exception(self,reqeust,exception)
    执行:
      当views里面出现了exception就会执行

  5.process_response(self,request,response)
    1.何时执行
      在views.py返回响应对象之后执行
    2.执行的顺序
      按照在列表中注册的倒序依次执行
    3.返回值
      必须要有返回值,返回要是相应对象







猜你喜欢

转载自www.cnblogs.com/kermitjam/p/9229513.html