django rest framework - 你无法访问body

时间:2017-09-04 07:01:24

标签: django

我正在使用django 1.8 rest api,如下所示。

@api_view(['GET', 'POST'])
@authentication_classes((TokenAuthentication, SessionAuthentication, BasicAuthentication))
@permission_classes((IsAuthenticated,))
@staff_member_required
def api(request):
    print request.data

这个问题是它以字符串形式检索所有参数,因此我必须手动转换数字和布尔值。

我尝试使用:

print json.loads(request.body)

但显然django rest框架从数据流中读取会导致此错误:

Error: RawPostDataException: You cannot access body after reading from request's data stream

我也试过

json.loads(request.stream.body)

因为文档说流应该有效。

有没有办法可以使用适当的类型检索请求发布数据?

请注意,我正在使用ajax通过JSON.stringify发送数据。

1 个答案:

答案 0 :(得分:1)

您想在DRF中使用serializers。它们将允许您将模型实例转换为本机Python数据类型,这些数据类型可以转换为JSON,反之亦然。您还可以反序列化将这些JSON字符串转换为复杂类型。

详细了解序列化程序here