django-rest-framework-从零开始-7-视图类ListCreateAPIView和RetrieveUpdateDestroyAPIView的使用
django-rest-framework-从零开始-7-视图类ListCreateAPIView和RetrieveUpdateDestroyAPIView的使用
1、前言
-
之前,我们知道了有一个公共的
GenericAPIView类,只需要将模型类和序列化类通过定义GenericAPIView类中queryset和serializer_class属性或者重写GenericAPIView类中的get_queryset()和get_serializer_class()就可以告知它我们的模型类和序列化类,这样它就能完成一般的CRUD功能。 -
但是我们还需要明确写出
get视图函数调用list方法,post视图函数调用create方法,put视图函数调用update方法,delete视图函数调用destory方法,这又是重复代码,因此drf又提供了功能的类,名叫ListCreateAPIView类和RetrieveUpdateDestroyAPIView类 -
ListCreateAPIView类用于List视图,而RetrieveUpdateDestroyAPIView类用于Detail视图。List视图就是用于获取所有模型对象信息和创建一个模型对象。Detail视图用于获取单个模型对象和更新、删除单个模型对象。 -
ListCreateAPIView类继承了mixins.ListModelMixin,mixins.CreateModelMixin和GenericAPIView,并重写了get、post方法。直接完成了List视图的功能 -
RetrieveUpdateDestroyAPIView类继承了RetrieveModelMixin,UpdateModelMixin,DestroyModelMixin,GenericAPIView类,重写了get、put、patch、delete方法,直接完成了Detail视图
2、创建ListCreateAPIView类视图和RetrieveUpdateDestroyAPIView类视图
修改student_manager/views.py文件
class StudentList(generics.ListCreateAPIView):
queryset = Student.objects.all()
serializer_class = StudentSerializer
class StudentDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Student.objects.all()
serializer_class = StudentSerializer
图示

说明:
-
可以看出这里把之前的所有公共的方法都抽出来,作为基类了。只需要我们填充模型类和序列化类。
-
到这里,整体的流程就是:
- 发起请求,到达路由,路由分配对应的请求视图函数,视图函数找到mixins的处理函数,处理函数调用基类GenericAPIView的一些函数,执行后返回数据
3、启动服务,测试类视图
测试和之前一样。

浙公网安备 33010602011771号