- Building RESTful Python Web Services
- Gastón C. Hillar
- 367字
- 2021-08-20 10:24:26
Creating class-based views and using generic classes
This time, we will write our API views by declaring class-based views, instead of function-based views. We might code classes that inherit from the rest_framework.views.APIView
class and declare methods with the same names than the HTTP verbs we want to process: get
, post
, put
, patch
, delete
, and so on. These methods receive a request
argument as happened with the functions that we created for the views. However, this approach would require us to write a lot of code. Instead, we can take advantage of a set of generic views that we can use as our base classes for our class-based views to reduce the required code to the minimum and take advantage of the behavior that has been generalized in Django REST Framework.
We will create subclasses of the two following generic class views declared in rest_framework.generics
:
ListCreateAPIView
: Implements theget
method that retrieves a listing of a queryset and thepost
method that creates a model instance.RetrieveUpdateDestroyAPIView
: Implements theget
,put
,patch
, anddelete
methods to retreive, completely update, partially update or delete a model instance.
Those two generic views are composed by combining reusable bits of behavior in Django REST Framework implemented as mixin classes declared in rest_framework.mixins
. We can create a class that uses multiple inheritance and combine the features provided by many of these mixin classes. The following line shows the declaration of the ListCreateAPIView
class as the composition of ListModelMixin
, CreateModelMixin
and rest_framework.generics.GenericAPIView
:
class ListCreateAPIView(mixins.ListModelMixin, mixins.CreateModelMixin, GenericAPIView):
The following line shows the declaration of the RetrieveUpdateDestroyAPIView
class as the composition of RetrieveModelMixin
, UpdateModelMixin
, DestroyModelMixin
and rest_framework.generics.GenericAPIView
:
class RetrieveUpdateDestroyAPIView(mixins.RetrieveModelMixin, mixins.UpdateModelMixin, mixins.DestroyModelMixin, GenericAPIView):
Now, we will create a Django class based views that will use the previously explained generic classes and the serializer classes to return JSON representations for each HTTP request that our API will handle. We will just have to specify a queryset
that retrieves all the objects in the queryset
attribute and the serializer class in the serializer_class
attribute for each subclass that we declare. The generic classes will do the rest for us. In addition, we will declare a name
attribute with the string name we will use to identify the view.
- Beginning Java Data Structures and Algorithms
- Java入門經典(第6版)
- SQL Server 2012數據庫技術及應用(微課版·第5版)
- Mastering Swift 2
- Python漫游數學王國:高等數學、線性代數、數理統計及運籌學
- HTML5入門經典
- Elasticsearch for Hadoop
- 名師講壇:Spring實戰開發(Redis+SpringDataJPA+SpringMVC+SpringSecurity)
- Android底層接口與驅動開發技術詳解
- C語言程序設計
- R數據科學實戰:工具詳解與案例分析
- Getting Started with Electronic Projects
- Python編程快速上手2
- Mastering Bootstrap 4
- Java程序設計入門(第2版)