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

Django REST API POST返回200但无法将请求体存入SQLite数据库

Django REST API 模型保存失败问题解决方案

第一步:先解锁被吞的报错信息

你当前用了无任何过滤的裸except块,所有运行异常都会被直接捕获吞掉,所以服务端没有任何报错输出,先修改视图代码打印异常信息:

# 顶部先导入两个依赖
import traceback
from django.views.decorators.csrf import csrf_exempt

# 加csrf_exempt装饰器跳过POST请求的CSRF校验,Postman调用时不需要额外传Token
@csrf_exempt
def add_planet(request):
    if request.method == 'POST':
        payload = json.loads(request.body)
        planet_name = payload['name']
        avg_temp = payload['temp']
        day_hrs = payload['hrs']
        planet_mass = payload['mass']
        planet_diameter = payload['diameter']
        planet_circumference = payload['circumference']

        print(planet_name,avg_temp,day_hrs,planet_mass,planet_diameter,planet_circumference) 

        planet = Planet(name=planet_name,temp=avg_temp,hrs=day_hrs,mass=planet_mass, diameter=planet_diameter, circumference=planet_circumference)

        try:
            planet.save()
            response = json.dumps([{ 'Success': 'Planet added successfully!'}])
        except Exception as e:
            # 打印异常信息和栈追踪
            print("保存错误原因:", e)
            print("详细错误栈:", traceback.format_exc())
            response = json.dumps([{ 'Error': 'Planet could not be added!'}])
    return HttpResponse(response, content_type='text/json')

修改后重新发请求,看控制台的报错就能直接定位根因。

常见的报错原因(90%概率是以下问题)

  • 没有执行模型迁移命令,SQLite中还没有创建Planet模型对应的表:
    进入项目根目录执行两条迁移命令即可:
    python manage.py makemigrations
    python manage.py migrate
    
  • 存放Planet模型的应用没有注册到settings.py的INSTALLED_APPS列表中,导致迁移不生效,表无法创建
  • 传入的字段内容长度超过了模型定义的max_length=20限制,你当前传的参数长度符合要求,仅当后续传更长内容时需要注意

优化建议

如果是长期做Django接口开发,更推荐使用Django REST Framework(DRF)框架,内置的序列化器可以自动完成参数校验、JSON解析、模型序列化操作,不需要手动处理JSON加载、参数提取逻辑,容错性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:00:03