06 請求模塊:request對象

請求模塊:request對象

源碼入口:APIView類的dispatch方法中

request = self.initialize_request(request, *args, **kwargs)python


class Test(APIView):
    def get(self, request, *args, **kwargs):
        # url拼接的參數
        print(request._request.GET)  # 二次封裝方式
        print(request.GET)  # 兼容
        print(request.query_params)  # 拓展,兼容性最強
        return Response('drf get ok')

    def post(self, request, *args, **kwargs):
        # # 全部請求方式攜帶的數據包
        print(request._request.POST)  # 二次封裝方式
        print(request.POST)  # 兼容
        print(request.data)  # 拓展,兼容性最強,三種傳參方式均可以:form-data,urlencoding,json
        return Response('drf post ok')

總結

  1. drf對原生request作了二次封裝,設置request._request等於原生request
  2. 原生request對象的屬性和方法均可以被drf的request對象直接訪問(兼容)
  3. drf請求的全部url拼接參數均被解析到query_params中,全部數據包數據都被解析到data中
  • get請求:url中拼接的參數經過 request.query_params獲取
  • post請求:全部請求方式所攜帶的數據包都是經過 request.data獲取
相關文章
相關標籤/搜索