python - Django REST框架解析request.data引发错误

标签 python django django-rest-framework

在 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/

相关文章:

python - Django Select Option 选中问题

python - 权限 : in django rest framework

python - BeautifulSoup - 处理自动关闭标签的正确方法

python - 如何在 BeautifulSoup 4 中找到明文同级?

python - Django cache_page - 预填充/预缓存

python - 在 django 中获取多个站点 id 的问题

django - DRF : Customising Exception Messages from the API

python - 发布后单用户补丁时jmeter引发线程异常

python - 对 GaussianHMM.fit([X]) 中的 X 感到困惑

python - 在需要 float 时接收整数值(使用 numpy 数组计算行列式)