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

Django+DRF+Djoser登录及用户创建未返回预期错误信息求助

问题分析与解决方案

前端代码问题

你当前的错误捕获逻辑写错了——在catch块里,你遍历的是error.response对象,可后端返回的错误信息(包括你要的non_field_errors)都存在error.response.data里,这才是你该遍历的目标。

修改后的错误捕获代码如下:

.catch(error => {
    this.errors = []; // 先清空之前的错误列表
    if (error.response) {
        // 遍历后端返回的错误字段
        for (const property in error.response.data) {
            // 处理数组类型的错误信息(比如non_field_errors是数组)
            const errorContent = Array.isArray(error.response.data[property])
                ? error.response.data[property].join(', ')
                : error.response.data[property];
            this.errors.push(`${property}: ${errorContent}`);
        }
    } else if (error.message) {
        this.errors.push('Something went wrong. Please try again!');
    }
})

服务器端配置检查(可选)

如果改完前端还是没得到预期的错误格式,再检查以下Djoser和DRF的配置:

  • 确保settings.py里的Djoser配置正确,没有自定义修改错误响应格式:
    DJOSER = {
        'LOGIN_FIELD': 'username',
        'SERIALIZERS': {
            'user_create': 'djoser.serializers.UserCreateSerializer',
            'user': 'djoser.serializers.UserSerializer',
        },
    }
    
  • 检查DRF的渲染器设置,确保优先返回JSON格式错误:
    REST_FRAMEWORK = {
        'DEFAULT_RENDERER_CLASSES': [
            'rest_framework.renderers.JSONRenderer',
            # 若不需要可注释掉Browsable API
            # 'rest_framework.renderers.BrowsableAPIRenderer',
        ],
        'DEFAULT_AUTHENTICATION_CLASSES': [
            'rest_framework.authentication.TokenAuthentication',
        ],
    }
    

你遇到的登录错误、密码过短错误本质是同一个问题——前端没正确读取后端的错误数据,先改前端代码测试,大概率就能解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 04:35:18