msg = ('When a serializer is passed a `data` keyword argument you ''must call `.is_valid()` before attempting to access the ''serialized `.data` representation.\n''You should either call `.is_valid()` first, ''or access `.initial_data` instead.')raiseAssertionError(msg)ifnothasattr...
is_valid()方法还可以在验证失败时抛出异常serializers.ValidationError,可以通过传递raise_exception=True参数开启,REST framework接收到此异常,会向前端返回HTTP 400 Bad Request响应。 >>> from book.serializers import BookInfoSerializer >>> >>> data = { ... 'id':100, ... 'name':'Python高级', ......
city_serializer = DrfCitySerializer(instance=queryset, many=True) return Response(city_serializer.data) def post(self, req): city_serializer = DrfCitySerializer(data=req.data) if city_serializer.is_valid(): # 插入数据 DrfCity.objects.create(**city_serializer.validated_data) # 把插入的数据返回...
-ser.is_valid 才做的校验---》入口 -BookSerializer---》Serializer——-》BaseSerializer---》is_valid---》继承了Field -is_valid 方法先来到BaseSerializer类中找到is_valid方法def is_valid(self, *, raise_exception=False): # self中没有_validated_data,只有执行完后,才有 if not hasattr(self, ...
ser = BookSerializer(data=data_dict) ser.is_valid(raise_exception=True) # 验证方法,一旦调用这个is_valid()方法,就会调用序列化器里的数据内容是否符合要求,想看下验证结果 # raise_exception=True 的含义是,一旦检出错误,自动return,不用我们手写return ...
然后,您可以使用is_valid()方法来验证数据的有效性,并使用save()方法来更新数据对象。 删除(DELETE)操作:在删除操作中,您可以使用DRF提供的DestroyAPIView类来处理删除请求。该类会自动删除匹配的模型实例。通过以上介绍,您应该对Django REST Framework(DRF)框架和serializers序列化器有了基本的了解。在实际应用中,您...
# 查看反序列化结果|语法格式 # 查看结果之前,必须先调用ser.is_valid()对数据进行验证 serializer = 序列化器类(data=request.query_params) if serializer.is_valid(): print(serializer.data) 现在,我们定义一个POST方法 class UserAPIView(APIView): def post(self,request): """ 创建用户信息 """ serial...
serializer.is_valid()# 返回False #{'btitle':[ErrorDetail(string='This field is required.',code='required')],'name':[ErrorDetail(string='Date has wrong format. Use one of these formats instead: YYYY[-MM[-DD]].',code='invalid')]}验证失败validated_data就是空print(serializer.validated_...
创建序列化器类(Serializer class) 我们开始使用Web API需要做的第一件事,就是提供一个可以将snippets实例序列化和反序列化成诸如json等表现形式的方法。我们可以通过生命一个序列化器来实现,序列化起的使用与Django中的forms使用方法十分类似,在snippet目录中新建一个文件serializers.py并写入如下代码: from rest_fram...
[])# 在创建的时候先创建一个centerodrer然后获取centerorder的pk 再创建对应的OrderCenterThough收到更新中间表数据serializer=self.get_serializer(data=request.data)serializer.is_valid(raise_exception=True)self.perform_create(serializer)# 上面创建了主订单,这里获取主订单的id#print(serializer.instance.pk)# ...