发送POST请求时遇TypeError: Response.__init__()意外参数'errors'
修复Response初始化的TypeError错误
你遇到的错误是因为Django REST Framework(DRF)的Response类并没有errors这个关键字参数。当序列化器验证失败时,需要把错误信息作为data参数传入,或者直接作为第一个位置参数传递。
修改后的完整代码:
class PostViewSet(viewsets.ModelViewSet): serializer_class = PostSerializer queryset = Post.objects.all() permission_classes = [IsAuthorOrReadOnly] def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) user = request.user if serializer.is_valid(): serializer.save(author=user) return Response(data=serializer.data, status=status.HTTP_201_CREATED) # 替换错误的errors参数为data,或直接传递serializer.errors return Response(data=serializer.errors, status=status.HTTP_400_BAD_REQUEST)
另外也可以用更简洁的写法,省略data关键字,直接把错误信息作为第一个参数:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
DRF的Response构造函数默认将第一个参数作为响应体数据,所以这两种写法都能正确返回错误信息,同时避免TypeError。
内容的提问来源于stack exchange,提问作者Raskolnikov
相关产品推荐
相关产品推荐

