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

React应用用dj-rest-auth注册失败,报400及ConnectionRefusedError

解决dj-rest-auth注册时的ConnectionRefusedError及400错误

问题1:前端请求字段不匹配导致400错误

你的React请求里用了user字段,但dj-rest-auth的注册接口默认接收的是username字段,这会导致后端无法识别字段,返回400错误。同时原代码的then回调里没有返回res.json(),后续无法获取响应数据。

修改register.js:

fetch('/api/dj-rest-auth/registration/', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        username: 'alalala',  // 将user改为username
        password1: '1234',
        password2: '1234',
        email: 'ala@gmail.com',
      })
    })
.then(res => res.json())  // 确保返回res.json(),以便后续处理响应

问题2:邮件服务未配置导致ConnectionRefusedError

dj-rest-auth依赖django-allauth,默认开启了邮箱验证(ACCOUNT_EMAIL_VERIFICATION = 'mandatory'),但本地环境没有配置邮件服务器,导致发送验证邮件时出现连接拒绝错误。

解决方法二选一:

方法A:禁用邮箱验证

在settings.py中添加:

ACCOUNT_EMAIL_VERIFICATION = 'none'

这样注册后不会触发邮件发送流程,直接完成注册。

方法B:使用测试邮件后端(推荐用于开发)

将邮件输出到控制台,无需实际邮件服务器:

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

额外检查

  1. 确保已执行sites应用的迁移:
python manage.py migrate

因为你在INSTALLED_APPS中添加了django.contrib.sites,需要迁移生成site表数据。

  1. 如果你自定义了CustomRegisterSerializer,要确保序列化器中的字段与前端请求字段一致,比如如果自定义了用户名字段,要对应修改前端参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 21:33:23