我正在使用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发送数据。
答案 0 :(得分:1)
您想在DRF中使用serializers
。它们将允许您将模型实例转换为本机Python数据类型,这些数据类型可以转换为JSON,反之亦然。您还可以反序列化将这些JSON字符串转换为复杂类型。
详细了解序列化程序here