五、DRF框架中的Mixin
DRF中的Mixin拓展类,需要放在GenericAPIView前面继承
ListModelMixin
类里面实现了获取项目列表的方法,可以直接调用list方法使用
def get(self, request, *args, **kwargs): # *args, **kwargs为了接收前端传的路径参数 return self.list(request, *args, **kwargs)
CreatModelMixin
类里面实现了创建项目的方法,可以直接调用create方法使用
def post(self, request, *args, **kwargs): """创建项目""" return self.create(request, *args, **kwargs)
RetrieveModelMixin
类里面实现了获取某个项目的数据,直接调用retrieve方法使用
def get(self, request, *args, **kwargs): return self.retrieve(request, *args, **kwargs)
UpdateModelMixin
类里面实现了更新某个项目的数据,直接调用update方法使用,里面有一个partial_update方法实现了部分更新,如果使用patch去请求会自动调用这个方法
全更新表示每一个必传字段都需要传,如果传的参数中有字段和原数据库的字段(设置了字段唯一)重复了,那么会报错
部分更新表示只需要传需要更新的字段,就算传了重复的,也不会报错,它不会校验数据是否唯一
def put(self, request, *args, **kwargs): return self.update(request, *args, **kwargs)
DestroyModelMixin
类里面实现了删除某个项目的数据,直接调用destroy方法使用
def delete(self, request, *args, **kwargs): return self.destroy(request, *args, **kwargs)
generics中的方法
ListCreateAPIView
里面实现了ListModelMixin,CreatModelMixin中的get和post方法
RetrieveUpdateAPIView
里面实现了UpdateModelMixin中的put方法
RetrieveDestroyAPIView
里面实现了DestroyModelMixin中的delete方法
RetrieveUpdateDestroyAPIView
里面实现了get、put、patch、delete方法
使用generics中的方法就可以完成六个接口
如:
class ProjectList(generics.ListCreateAPIView): queryset = Projects.object.all() serializer_class = serializers.ProjectModelSerializer filter_backends = [DjangoFilterBackend,OrderingFilter] filterset_fields = ['name', 'leader', 'tester'] ordering_fields = ['id', 'name', 'leader'] class ProjectList(generics.RetrieveUpdateDestroyAPIView): queryset = Projects.object.all() serializer_class = serializers.ProjectModelSerializer
浙公网安备 33010602011771号