DRF family of view

A: GenericAPIView

(1) Features:

  (1) its successor APIVies, using a fully compatible APIView

  (2) which is above the APIView has added new features

(2) use

(3) monosubstituted

# Routing layer 
the urlpatterns = [
    url(r'^v2/books/$', views.BookGenericAPIView.as_view()),
    url(r'^v2/books/(?P<pk>.*)/$', views.BookGenericAPIView.as_view()),
]
# View layer 
DEF GET (Self, Request, * args, ** kwargs): # traditional way check single group here does not include the same check book_query = models.Book.objects.all () filter (= is_delete. False) book_ser = serializers.BookModelSerializer(book_query, many=True) data = book_ser.data return APIResponse(results=data)
GET DEF (Self, Request, * args, ** kwargs): 
# GenericAPIView way value
book_query = self.get_queryset () # get serialized object
book_ser = self.get_serializer (book_query, many = True) # serialize
book_data = book_ser.data # acquiring data
return APIResponse (results = book_data)

PS:

  (1) Such an error would not get queryset objects 

  (2) no class acquisition sequence

    queryset = models.Book.objects.filter(is_delete=False)
    serializer_class = serializers.BookModelSerializer
    def get(self, request, *args, **kwargs):

        # GenericAPIView manner value 
        book_query self.get_queryset = ()   # acquisition sequence object 
        book_ser = self.get_serializer (book_query, MANY = True)   # serialization 
        book_data = book_ser.data    # acquired data 
        return APIResponse (= book_data Results)

PS:

       (1) get_queryset (): get model from the class properties the queryset queryset data
  (2) get_object (): get queryset data model from the class properties queryset, and then determine a unique operation target by a known packet PK
  (. 3) get_serializer () : serializer sequence obtained from the classes of the class properties serializer_class

# Monosubstituted 
    lookup_field = ' PK '   # can customize the name by which the primary key 
    DEF GET (Self, Request, * args, ** kwargs):
        book_query = self.get_object()
        book_ser = self.get_serializer(book_query)
        book_data = book_ser.data
        return APIResponse(results=book_data)

 

Guess you like

Origin www.cnblogs.com/SR-Program/p/11706332.html