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、启动服务,测试类视图
测试和之前一样。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示