You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django REST Framework GET正常POST返回JSON解析错误如何解决

问题根因
  1. 代码逻辑错误:你使用了DRF的@api_view装饰器,这个装饰器会自动完成请求解析逻辑,直接把解析好的数据放到request.data属性中,同时会消耗掉原始请求的body流。你在POST逻辑里又调用了JSONParser().parse(request)去二次读取请求流,此时流已经是空的,自然解析不出JSON内容,就会抛出你遇到的报错。
  2. 次要的请求端问题:如果你发起POST请求时没有设置Content-Type: application/json请求头,或者请求体根本没有携带合法的JSON数据,也会触发这个报错。
修复方案
  • 首先修改snippet_list视图的POST逻辑,删掉手动调用JSONParser的代码,直接用request.data即可,和你已写的PUT请求逻辑保持一致就好:
elif request.method == 'POST':
    print("the request",request.data)
    # 删除下面这行冗余代码
    # data = JSONParser().parse(request)
    # 直接用request.data传给序列化器
    serializer = SnippetSerializer(data=request.data)
    if serializer.is_valid():
        serializer.save()
        return Response(serializer.data, status=status.HTTP_201_CREATED)
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
  • 其次发起POST请求时需要确认:
    • 请求头携带Content-Type: application/json
    • 请求体是合法的JSON格式,不能为空

内容的提问来源于stack exchange,提问作者qua

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 09:54:02