A:
# 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)