Drf之请求源码分析(三)

drf 的 请求源码分析

# as_view()
	# 核心走了父类as_view
	view = super(APIView, cls).as_view(**initkwargs)
    # 返回的是局部禁用csrf认证的view视图函数
    return csrf_exempt(view)
    
# dispatch(self, request, *args, **kwargs)  #drf自己有dispatch方法就不走父类的dispatch
	# 二次封装request对象
	request = self.initialize_request(request, *args, **kwargs)
    # 自定义request规则
    self.initial(request, *args, **kwargs)
    
# initialize_request(self, request, *args, **kwargs)
	# 原生request封装在request._request
    
# initial(self, request, *args, **kwargs)
	# 认证
	self.perform_authentication(request)
    # 权限
    self.check_permissions(request)
    # 频率
    self.check_throttles(request)
    
# 在drf的request.py的模块中,对django的request进行二次封装
	def __getattr__(self, attr):
    	try:
            return getattr(self._request, attr)
        except AttributeError:
            return self.__getattribute__(attr)
    # 完成对django的request完全兼容
posted @ 2019-07-06 13:33  不会玩python  阅读(2)  评论(0编辑  收藏  举报