You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

发送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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 22:15:28