标签:EAP eric gen hvie python elm 实例化 有一个 修改
1 APIView # 基础类
from rest_framework.views import APIView
2 GenericAPIView # 封装一些有关数据库操作
# GenericAPIView(APIView)
from rest_framework.generics import GenericAPIView
-属性:
queryset = models.Publish.objects.all() # 要序列化的数据
serializer_class = serializer.PublishSerializer # 序列化器的类
-方法:
get_queryset:获取qs数据
get_object:获取一条数据的对象
get_serializer:以后使用它来实例化得到ser对象
get_serializer_class:获取序列化类,注意跟上面区分
from rest_framework.mixins import *
# 每个类内部只有一个方法,一个类只完成一个事
CreateModelMixin # create方法创建一条
RetrieveModelMixin # retrieve获取一条
DestroyModelMixin # destory方法删除一条
ListModelMixin # list方法获取所有
UpdateModelMixin # update修改一条
from rest_framework.generics import *
# 单功能
CreateAPIView # 有post方法,新增数据
# 继承CreateModelMixin,GenericAPIView
DestroyAPIView # 有delete方法,删除数据
# 继承DestroyModelMixin,GenericAPIView
ListAPIView # 有get方法获取所有
# 继承ListModelMixin,GenericAPIView
UpdateAPIView # 有put和patch方法,修改数据
# 继承UpdateModelMixin,GenericAPIView
RetrieveAPIView # 有get方法,获取一条
# 继承RetrieveModelMixin,GenericAPIView
# 复功能
ListCreateAPIView # 有get获取所有,post方法新增
# 继承ListModelMixin,CreateModelMixin,GenericAPIView
RetrieveDestroyAPIView # 有get方法获取一条,delete方法删除
# 继承RetrieveModelMixin,DestroyModelMixin,GenericAPIView
RetrieveUpdateAPIView # 有get获取一条,put,patch修改
# 继承RetrieveModelMixin,UpdateModelMixin,GenericAPIView
RetrieveUpdateDestroyAPIView # 有get获取一条,put,patch修改,delete删除
# 继承RetrieveModelMixin,UpdateModelMixin,DestroyModelMixin,GenericAPIView
from rest_framework.viewsets import *
ViewSetMixin # 重写了as_view
# 如果视图类继承了ViewSetMixin这个类,路由的as_view执行的是ViewSetMixin的as_view
# 路由写法就需要 path(‘publish/‘, views.PublishView.as_view({‘get‘: ‘list‘, ‘post‘: ‘create‘}))
ViewSet # 继承ViewSetMixin和APIView
GenericViewSet # 继承ViewSetMixin, generics.GenericAPIView
ModelViewSet # 5个接口都有
‘‘‘继承了 mixins.CreateModelMixin,
mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.DestroyModelMixin,
mixins.ListModelMixin,
GenericViewSet
‘‘‘
ReadOnlyModelViewSet # 只有读的两个接口
‘‘‘继承了 mixins.RetrieveModelMixin,
mixins.ListModelMixin,
GenericViewSet
‘‘‘
-如果不涉及数据库操作:继承APIView
-如果想让路由可以映射:继承ViewSetMixin
-如果不涉及数据库操作,又要让路由可以映射:继承ViewSet
-比如发邮件接口,发短信接口
-如果涉及到数据库操作:继承GenericAPIView
-如果想让路由可以映射:继承ViewSetMixin
-如果涉及数据库操作,又要让路由可以映射:继承GenericViewSet
-如果涉及数据库操作,又要让路由可以映射,还要能新增:继承GenericViewSet+CreateModelMixin或者继承ViewSetMixin+CreateAPIView
-如果只涉及到数据库操作和新增:继承CreateAPIView
标签:EAP eric gen hvie python elm 实例化 有一个 修改
原文地址:https://www.cnblogs.com/shof/p/14720698.html