1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
   |          '''     1 path的第二个参数是:APIView类的as_view内部是用了View的as_view内的view闭包函数     2 一旦有请求来了,匹配test路径成功     3 执行第二个参数view函数内存地址(requset),还是执行View的as_view内的view闭包函数,但是加了个csrf_exempt装饰器     4 所以,继承了APIView的所有接口,都没有csrf的校验了 (*****************)     5 执行self.dispatch(request)----》APIView类的         def dispatch(self, request, *args, **kwargs):             # 以后所有的request对象,都是****新的request对象***,它是drf的Request类的对象             request = self.initialize_request(request, *args, **kwargs)             self.request = request             try:                 #整个drf的执行流程内的权限,频率,认证                 self.initial(request, *args, **kwargs)                 if request.method.lower() in self.http_method_names:                     handler = getattr(self, request.method.lower(),                                       self.http_method_not_allowed)                 else:                     handler = self.http_method_not_allowed                      response = handler(request, *args, **kwargs)                  except Exception as exc:                 # 全局异常                 response = self.handle_exception(exc)             # 响应             self.response = self.finalize_response(request, response, *args, **kwargs)             return self.response     '''     
 
  def initialize_request(self, request, *args, **kwargs):     return Request(         request,         parsers=self.get_parsers(),         authenticators=self.get_authenticators(),         negotiator=self.get_content_negotiator(),         parser_context=parser_context     )
 
 
    所有的csrf都不校验了   request对象变成了新的request对象,drf的request对象   执行了权限,频率,认证   捕获了全局异常(统一处理异常)   处理了response对象,如果浏览器访问是一个样,postman访问又一个样   以后,在视图类中使用的request对象已经不是原来的request对象了,现在都是drf的request对象了
   |