is_valid()方法还可以在验证失败时抛出异常serializers.ValidationError,可以通过传递raise_exception=True参数开启,REST framework接收到此异常,会向前端返回HTTP 400 Bad Request响应。 >>> from book.serializers import BookInfoSerializer >>> >>> data = { ... 'id':100, ... 'name':'Python高级', ......
假设我们规定name字段不能包含字符“X”,我们可以在类的外面定义一个函数,这个函数需要给定一个形参,用来接收待校验的数据,并且指定条件下要抛出serializers.ValidationError的异常,如果validators字段值的列表中有多个校验规则,校验过程中会全部进行校验,并以列表的形式返回一组异常校验信息 fromrest_frameworkimportserializer...
3、验证字典数据 我们使用序列化器对象点出is_valid()方法进行验证。验证成功返回True,否则返回False data = {'name':'某XX','age':19,'address':'河南'} user_ser = UserSerializer(data=data)ifuser_ser.is_valid():# 如果验证成功,则保存数据返回user_ser.save()returnResponse({'msg':'OK','code'...
from rest_framework.decorators import api_view from rest_framework.response import Response @api_view(['POST']) def my_view(request): serializer = MySerializer(data=request.data) if serializer.is_valid(): # 处理验证通过的数据 name = serializer.validated_data['name'] age = serializer.validated...
然后,您可以使用is_valid()方法来验证数据的有效性,并使用save()方法来更新数据对象。 删除(DELETE)操作:在删除操作中,您可以使用DRF提供的DestroyAPIView类来处理删除请求。该类会自动删除匹配的模型实例。通过以上介绍,您应该对Django REST Framework(DRF)框架和serializers序列化器有了基本的了解。在实际应用中,您...
ser = BookSerializer(data=data_dict) ser.is_valid(raise_exception=True) # 验证方法,一旦调用这个is_valid()方法,就会调用序列化器里的数据内容是否符合要求,想看下验证结果 # raise_exception=True 的含义是,一旦检出错误,自动return,不用我们手写return ...
'Cannot call `.is_valid()` as no `data=` keyword argument was ' 'passed when instantiating the serializer instance.' ) if not hasattr(self, '_validated_data'): try: self._validated_data = self.run_validation(self.initial_data)
obj=BookInfoSerializer(data={"name":name,"pub_date":pub_date,"readcount":0,"commentcount":10})#使用is_valid()进行验证ifobj.is_valid():# 使用save进行保存 obj.save()returnJsonResponse(obj.data)else:# 序列化器对象的errors属性获取字典形式的错误信息returnJsonResponse(data=obj.errors,status=400...
# ser.is_valid(raise_exception=True) # 成功 , 否则,抛出异常# print(ser.validated_data)# return Response("成功了!") 2.2ModelSerializer校验! 编写序列化类 编写一个序列化的类!继承ModelSerializer类,可以自己编写字段,设置校验 编写方式为: 可以自定义编写一个需要校验的字段...
if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) @api_view(['GET', 'PUT', 'DELETE']) def snippet_detail(request, pk): ...