drf請求模塊分析

1、drf請求模塊

  1. 、drf的request是在wsgi的request基礎上再次封裝源碼分析

  2. 、wsgi的request做爲drf的request一個屬性:_requestspa

  3. 、新的request對舊的request作了徹底兼容3d

  4. 、新的request對數據解析更規範化:csrf

    ​ 全部的拼接參數都解析到query_params中,blog

    ​ 全部數據包數據都被解析到data中繼承

    ​ query_params和data屬於QueryDict類型,能夠 .dict() 轉化成原生dict類型 get

源碼分析

一、drf的APIView類:重寫了as_view(),同時他還繼承了View類,主體邏輯仍是調用父類View的as_view()。源碼

2.as_view(),局部禁用了csrf認證 重點:全部繼承drf的基本視圖類APIView的視圖類,都不在作csrf認證校驗it

3.drf的APIView類:重寫了dispatch(),在內部對request進行了二次封裝:self.initialize_request(request, *args, **kwargs)基礎

  1. 內部核心:

走drf的Request初始化方法__init__:self._request = request

drf的Request的getter方法__getattr__:先從self._request反射取屬性,沒取到再到drf的request中取

5.核心:request除了能夠訪問原wsgi協議的request全部內容,還能夠訪問 query_params、data,它封裝好了這兩個方法屬性

相關文章
相關標籤/搜索