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

Axios POST请求返回400错误,Postman同数据却正常(Django DRF+React.js)

解决DRF + Axios POST请求400错误的排查方案

我之前也碰到过一模一样的问题——Postman能正常请求,Axios却返回400,大概率是请求格式或头部设置出了问题,下面一步步帮你定位和解决:

第一步:先拿到DRF返回的详细错误信息

你现在的错误捕获只打印了error.toJSON(),但DRF在返回400错误时,会把具体的验证/解析错误放在error.response.data里。修改你的Axios错误处理代码:

.catch(error => {
    if (error.response) {
        // 这里会输出DRF返回的具体错误,比如哪个字段格式不对、必填项缺失
        console.log("服务器返回的详细错误:", error.response.data);
    } else {
        console.log(error.toJSON());
    }
});

刷新页面再发一次请求,控制台就能看到具体的错误原因了,比如{"phone": ["Enter a valid phone number."]}或者{"non_field_errors": ["Invalid JSON payload."]}。

第二步:检查Axios的请求格式问题

看你的代码里用了JSON.stringify(data),这很可能就是问题根源:

  • Axios默认会把JavaScript对象自动序列化为JSON字符串,同时自动设置Content-Type: application/json请求头
  • 如果你手动用JSON.stringify()把data转成字符串,Axios会把它当成普通文本发送,默认的Content-Type会变成text/plain,DRF收到后无法解析为JSON,直接返回400

解决方法很简单,去掉JSON.stringify(),直接传data对象就行:

onSubmit = (data) => { 
    console.log(data); 
    axios.post('http://localhost:8000/api/customer-information/', data) 
        .then(response => { 
            console.log(response.data); 
        }) 
        .catch(error => { 
            if (error.response) {
                console.log("服务器错误详情:", error.response.data);
            } else {
                console.log(error.toJSON());
            }
        }); 
};

如果因为特殊需求必须传字符串,那手动指定Content-Type头部:

axios.post('http://localhost:8000/api/customer-information/', data, {
    headers: {
        'Content-Type': 'application/json'
    }
})

第三步:用Django日志深度排查

如果上面的方法还是没找到问题,就在Django的settings.py里配置日志,打印请求的完整细节:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
        },
    },
    'loggers': {
        'django.request': {
            'handlers': ['console'],
            'level': 'DEBUG',
            'propagate': False,
        },
    },
}

启动Django服务器后,控制台会输出每个请求的详细日志,包括DRF处理请求时的错误堆栈,能帮你精准定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 11:07:55