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

Where to alter the response of POST request in Django REST Framework

我有一个视图,它继承自CreateAPIView与Django REST框架中设置的模型序列化器。

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

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

1
2
3
4
5
6
7
8
{'data'   : { 'field1' : 'value1' ,
              'field2' : value2 ,
               etc.....
             } ,
 'errors' : None ,
 'message': [{} , {}] ,
 'result' : 'OK' ,
}

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

我尝试创建一个自定义渲染器,如下所示:将根元素添加到json响应(django-rest-framework)但它永远不会被调用。
那是因为它只与GET请求有关而不是帖子吗?


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

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

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

    然而,如果你想保留这个结构,这个工作可以在你看来完成。 示例:

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