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

Django REST API返回200但数据未存入数据库的问题求助

问题诊断与解决方案

核心问题:字段名大小写不匹配

前端JS代码发送的字段是Fullname(首字母大写),但Django模型Patient里的字段是fullname(全小写),导致序列化器无法识别有效数据,serializer.is_valid()返回False,数据未保存,但视图仍返回空序列化器数据,因此服务器返回200状态码。

修复步骤

1. 修正前端请求的字段名

修改JS代码中请求体的字段名,与模型字段保持一致:

body: JSON.stringify({'fullname':Fullname})

2. 优化视图代码,返回错误信息(推荐)

当前视图未处理序列化器无效的情况,无法排查问题。更新addPatient视图,添加错误返回逻辑:

from rest_framework import status

@api_view(['POST'])
def addPatient(request):
    serializer = PatientSerializers(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)

额外排查点

  • 确认CSRF令牌有效性:在控制台打印csrftoken,检查是否成功获取到有效值。
  • 检查前端输入:确保Fullname输入框有值再提交,因为模型中fullname是必填字段。
  • 查看Django服务器日志:运行服务器时观察控制台输出,序列化器的错误信息会直接显示,帮助快速定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 18:50:33