(1)APIView? ? ? ? ? ? (2)GenericAPIView
1)APIView?
????rest_framework.views.APIView
????APIView是REST framework提供的所有視圖的基類,繼承自Django的View父類。
支持定義的屬性:(這些屬性都是針對(duì)大方向的,?沒(méi)有針對(duì)當(dāng)前視圖)
? ??authentication_classes?列表或元祖,身份認(rèn)證類
? ??permissoin_classes?列表或元祖,權(quán)限檢查類
? ??throttle_classes?列表或元祖,流量控制類
在APIView中仍以常規(guī)的類視圖定義方法來(lái)實(shí)現(xiàn)get() 、post() 或者其他請(qǐng)求方式的方法。
舉例:

2)GenericAPIView
????rest_framework.generics.GenericAPIView
????繼承自APIVIew,增加了對(duì)于列表視圖和詳情視圖可能用到的通用支持方法。通常使用時(shí),可搭配一個(gè)或多個(gè)Mixin擴(kuò)展類。
支持定義的屬性:(這些多出來(lái)的屬性有針對(duì)當(dāng)前視圖的)
????列表視圖與詳情視圖通用:
? ??????queryset?列表視圖的查詢集
? ??????serializer_class?視圖使用的序列化器
????列表視圖使用:
? ??????pagination_class?分頁(yè)控制類
? ??????filter_backends?過(guò)濾控制后端
????詳情頁(yè)視圖使用:
? ??????lookup_field?查詢單一數(shù)據(jù)庫(kù)對(duì)象時(shí)使用的條件字段,默認(rèn)為'pk'
? ??????lookup_url_kwarg?查詢單一數(shù)據(jù)時(shí)URL中的參數(shù)關(guān)鍵字名稱,默認(rèn)與look_field相同
提供的方法:
????列表視圖與詳情視圖通用:
? ??????get_queryset(self)
? ??????返回視圖使用的查詢集,是列表視圖與詳情視圖獲取數(shù)據(jù)的基礎(chǔ),默認(rèn)返回queryset屬性
? ??????get_serializer_class(self)
? ??????返回序列化器類,默認(rèn)返回serializer_class
? ??????get_serializer(self,?args, *kwargs)
? ??????返回序列化器對(duì)象,被其他視圖或擴(kuò)展類使用,如果我們?cè)谝晥D中想要獲取序列化器對(duì)象,可以直接調(diào)用此方法。
注意,在提供序列化器對(duì)象的時(shí)候,REST framework會(huì)向?qū)ο蟮腸ontext屬性補(bǔ)充三個(gè)數(shù)據(jù):request、format、view,這三個(gè)數(shù)據(jù)對(duì)象可以在定義序列化器時(shí)使用。
舉例:

總結(jié):?
? ??如果只是簡(jiǎn)單的查詢數(shù)據(jù)庫(kù)里面的所有數(shù)據(jù),?直接用APIView就可以了,? 當(dāng)然也可以用GenericAPIView
? ??如果要查詢的數(shù)據(jù)是根據(jù)路徑查詢則可以用GenericAPIView