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

Django REST Framework POST请求JSON解析错误求助

问题分析与解决方案

核心问题

  1. 错误给创建接口添加GET方法:/note/create/是创建资源的接口,仅需支持POST方法。添加GET方法后,访问DRF自带的API页面会触发GET请求,但视图里强制解析JSON,而GET请求没有JSON数据,直接导致解析错误。
  2. 手动解析JSON兼容性差:你用JSONParser().parse(request)强制解析请求为JSON,但DRF API页面提交表单时发送的是application/x-www-form-urlencoded类型数据,而非JSON,因此解析失败;React发送的是标准JSON格式POST请求,所以能正常工作。
  3. HTTP方法名大小写错误:deletenote视图的api_view里用了小写的Delete,DRF无法识别该方法,会导致删除请求失败。

具体修复步骤

1. 修正createnote视图

恢复为仅支持POST方法,移除手动JSON解析,改用DRF自带的request.data自动兼容JSON和表单数据:

@api_view(['POST'])
def createnote(request):
    serializer = noteSerializer(data=request.data)

    if serializer.is_valid():
        serializer.save()
        return Response(serializer.data)
    # 返回验证错误信息,方便调试
    return Response(serializer.errors, status=400)

2. 修复deletenote视图的方法名

将小写Delete改为大写DELETE,确保DRF能正确识别:

@api_view(['DELETE'])
def deletenote(request,pk):
    notes = note.objects.get(id=pk)
    notes.delete()
    return Response("Note deleted")

3. DRF API页面正常使用说明

修正后直接访问/note/create/,DRF会自动展示POST方法的提交表单,你可以直接在表单中输入body内容提交,无需额外添加GET方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 21:20:09