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
相关产品推荐
相关产品推荐

