在 Django View 中,我正在尝试这个 -
@csrf_exempt
@api_view(['GET', 'POST'])
def EmployeeList(request):
if request.method == 'GET':
employees = PersonalInfo.objects.all()
serializer = PersonalInfoSerializer(employees, many=True)
return JsonResponse(serializer.data, safe=False)
elif request.method == 'POST':
data = JSONParser().parse(request)
print data
serializer = PersonalInfoSerializer(data=data)
if serializer.is_valid():
serializer.save()
return JsonResponse(serializer.data, status=201)
return JsonResponse(serializer.errors, status=400)
在从 postman 发布数据时,它引发属性错误
{
"detail": "JSON parse error - No JSON object could be decoded"
}
当使用 data = JSONParser().parse(request.data)
而不是 data = JSONParser().parse(request)
时出现此错误:
AttributeError: 'QueryDict' object has no attribute 'read'
最佳答案
当您使用 drf 时,请求是 rest_framework.request.Request
requests 的实例,但是对于 rest_framework.parsers
JSONParser.parser
您需要作为参数发送:django.core.handlers.wsgi.WSGIRequest
,您可以通过 request._request
获得,但我认为您只需要:
serializer = PersonalInfoSerializer(data=request.data)
关于python - Django REST框架解析request.data引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46559026/