三、DRF框架中的APIView
阿新 • • 發佈:2020-10-22
DRF中的Request
繼承DRF框架中APIView之後,request是DRF中的response物件,會根據請求頭中的Content-Type,自動進行解析
Response對HttpRequest進行的拓展,HttpRequest有的功能Response都支援
request.data來接收x-www-form或json引數或檔案,之前django提供的只能通過body來接收json引數,使用requet.POST來獲取www-from表單型別的引數
request.query_params來接收查詢字串引數
DRF中的Response
如果請求頭中沒有Accept,那麼預設返回json,如果添加了Accept,那麼會以Accept指定的格式返回
需要在Django專案的全域性配置表setting中覆蓋
傳入到檢視方法中的是Request物件,而不是Django中的HttpReauest物件
檢視方法可以返回Response物件,會為響應資料處理為符合前端要求的格式
任何APIException異常都會被捕獲到,並且處理成合適的響應資訊
在進行dispatch()分佈前
提供的功能:
authentication_classes 列表或元組,身份認證類
permission_classes 列表或元組,許可權檢查類
ehrottle_classes 列表或元組,流量控制類(主要為了反爬蟲)
defResponse(data,status=None,template_name=None,headers=None,Content-Type=None) 引數說明: data:序列化處理後的資料,一般為serillizer.data status:狀態碼 template_name:渲染的模板,一般不需要指定 headers:指定頭部資訊,一般不需要指定, 會自動處理 Content-Type:指定格式,一般不需要指定,會自動根據Accept來處理 覆蓋DRF框架中的預設配置get(self, request, pk): one_project = self.get_object(pk) serializer = serializers.ProjectSerializer(instance=one_project) return Response(data=serializer.data, status=status.HTTP_200_OK)
REST_FRAMEWORK = { # 預設響應渲染類 'DEFAULT_RENDERER_CLASSES':( # json渲染器為第一優先順序 'rest_framework.renderers.JSONRenderer', # DRF提供介面返回的一個內建頁面,如果註釋下方程式碼網頁訪問就只能看到介面返回的資訊 'rest_framework.renderers.BrowsableAPIRenderer' ) }APIView與View的不同之處