Serializer保存数据问题

来源:10-4 订单管理接口-1_1

qq_拱手河山讨欢_0

2018-09-21

前端传来的数据先走mixins,然后进行验证,验证通过后,就会调用ModelSerializer的create或者update方法,如果继承的是Serializer,就需要自己重载Serializer中的create或者update方法,或者修改mixins的create等方法的逻辑进行保存。如下面。不知道这么理解对不对。

def create(self, request, *args, **kwargs):
    serializer = self.get_serializer(data=request.data)  #拿到的serializer就是   serializer_class = SmsSerializer中的SmsSerializer
    serializer.is_valid(raise_exception=True)  # raise_exception=True这个参数的意思还是,如果验证错误直接抛异常,不进入下面了。drf捕捉到就会抛出400异常

    mobile = serializer.validated_data["mobile"]   #取出serializer中的mobile,能到这步已经验证过了,肯定有mobile

    yun_pian = YunPian(APIKEY)         #实例化

    code = self.generate_code()     #调用发送code的函数

    sms_status = yun_pian.send_sms(code=code, mobile=mobile)  #调用发送短信的函数

    if sms_status["code"] != 0:                             #如果返回的code不为0代表失败,报错
        return Response({
            "mobile": sms_status["msg"]
        }, status=status.HTTP_400_BAD_REQUEST)
    else:                                                    #为0,保存code和mobile  返回状态
        code_record = VerifyCode(code=code, mobile=mobile)
        code_record.save()

        return Response({
            "mobile": mobile
        }, status=status.HTTP_201_CREATED)

写回答

1回答

bobby

2018-09-25

是的,你的理解是正确的。 但是serializer如果你继承的是modelserializer的话 你是不需要去重写save方法的

0
0

Python前后端分离开发Vue+Django REST framework实战

Django REST framework课程视频,RESTFul API前后端分离开发

2873 学习 · 2457 问题

查看课程