1.接口代码调用流程
#1.入口,子类继承CreateAPIView
class IssueIdea(CreateAPIView):
pass
#2.调用 CreateAPIView.post
class CreateAPIView(mixins.CreateModelMixin,GenericAPIView):
def post(self, request, *args, **kwargs):
return self.create(request, *args, **kwargs)
#3.post调用create方法,根据继承顺序执行CreateModelMixin.create
def perform_create(self, serializer):
#校验成功后保存
serializer.save()
def get_success_headers(self, data):
def create(self, request, *args, **kwargs):
...
#4.CreateModelMixin.create
#4.1 将前端数据传入序列化器进行校验
#GenericAPIView,返回序列化器类名
def get_serializer(self, *args, **kwargs):
....
return self.serializer_class #子类需要定义序列化器
#校验
serializer = self.get_serializer(data=request.data)
#4.2 验证成功保存数据
#传入序列化器进行保存
self.perform_create(serializer)
#调用CreateModelMixin.perform_create保存
def perform_create(self, serializer): #!子类可重写此方法自定义保存
serializer.save()
#4.2.1 序列化器 save方法
save():
self.create(validated_data) #create子类需要自定义,否则抛出异常(在此方法中自定义保存)
#5.serializer.create
#调用自定义的序列化器create方法进行保存
#1.入口,子类继承CreateAPIView
class I