在Django REST Framework中何处更改POST请求的响应

时间:2016-07-11 13:13:15

标签: django django-rest-framework

我有一个视图,它继承自{'data' : { 'field1' : 'value1' , 'field2' : value2 , etc..... } , 'errors' : None , 'message': [{} , {}] , 'result' : 'OK' , } ,并在Django REST框架中设置了模型序列化程序。

当我发送请求时,它返回已创建对象的JSON表示。

我想从响应中包装数据,如下所示:

{{1}}

修改返回数据的最佳位置在哪里?

我尝试创建一个自定义渲染器,如此问题所示:Adding root element to json response (django-rest-framework)但它永远不会被调用。 那是因为它只与GET请求有关而不是帖子吗?

1 个答案:

答案 0 :(得分:3)

我认为这种结构不太相关:

  1. 结果:为什么要包含一个字段OK,因为请求的状态代码在此处为您提供此信息:200 - >好的,201 - >创建,400 - >不好的要求等...
  2. 同一回复中的
  3. 数据错误对我没有意义。也许,你在序列化程序的created方法中有一个特殊的行为,但如果有错误,似乎逻辑上没有数据要发回(也许我错了)。 DRF允许您使用.is_valid()方法验证数据,您可以使用(例如)
  4. 简单地发回错误
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
    

    或直接使用.is_valid(raise_exception=True)引发异常。

    尽管如此,如果您想保留此结构,可以在您的视图中完成此工作。示例:

    return Response({
        'data': serializer.data,
        'errors': serializer.errors, # `.is_valid()` must be called
        'message': [{} , {}], 
        'result':'OK'
    })