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方法的
00
Python前后端分离开发Vue+Django REST framework实战
Django REST framework课程视频,RESTFul API前后端分离开发
2873 学习 · 2457 问题
相似问题