django-rest-framework-从零开始-7-视图类ListCreateAPIView和RetrieveUpdateDestroyAPIView的使用

django-rest-framework-从零开始-7-视图类ListCreateAPIView和RetrieveUpdateDestroyAPIView的使用

1、前言

  • 之前,我们知道了有一个公共的GenericAPIView类,只需要将模型类和序列化类通过定义GenericAPIView类中querysetserializer_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.CreateModelMixinGenericAPIView,并重写了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

图示

image-20230317142347819

说明:

  • 可以看出这里把之前的所有公共的方法都抽出来,作为基类了。只需要我们填充模型类和序列化类。

  • 到这里,整体的流程就是:

    • 发起请求,到达路由,路由分配对应的请求视图函数,视图函数找到mixins的处理函数,处理函数调用基类GenericAPIView的一些函数,执行后返回数据

3、启动服务,测试类视图

测试和之前一样。

github:https://github.com/rainbow-tan/learn-drf

posted @   南风丶轻语  阅读(521)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示