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

如何解决Django Allauth 65.5.0中USERNAME_REQUIRED与EMAIL_REQUIRED字段弃用的UserWarnings警告

如何解决Django Allauth 65.5.0中USERNAME_REQUIRED与EMAIL_REQUIRED字段弃用的UserWarnings警告

嗨,我来帮你搞定这个警告问题!首先得搞清楚为什么会出现这些提示:Django Allauth 65.0+版本彻底重构了注册字段的配置逻辑,原来全局的USERNAME_REQUIRED和EMAIL_REQUIRED设置已经被弃用,转而要求通过ACCOUNT_SIGNUP_FIELDS的字典格式来精细控制每个字段的必填性。

虽然你已经设置了带*的列表格式(比如"email*")来标记必填字段,但Allauth内部的一些逻辑或者你用到的依赖库(比如dj-rest-auth)可能还在检查旧的全局设置,所以触发了这些警告。下面给你两个解决方案,优先推荐第一个:

方案一:改用字典格式配置ACCOUNT_SIGNUP_FIELDS(从根源解决)

把你当前的列表式配置替换成更明确的字典格式,直接指定每个字段的必填状态,这样完全符合Allauth新的规范,就能彻底消除警告。

修改settings.py中的相关配置:

# 替换原来的列表格式
ACCOUNT_SIGNUP_FIELDS = {
    "email": {"required": True},
    "password1": {"required": True},
    "password2": {"required": True},
    "username": {"required": False},  # 因为你用邮箱登录,不需要用户名字段
}

# 保留你已有的其他配置
ACCOUNT_LOGIN_METHODS = {"email"}
ACCOUNT_EMAIL_VERIFICATION = "mandatory"

这样配置后,不仅能实现你需要的邮箱注册、邮箱验证功能,还完全适配了Allauth的新规则,警告自然就消失了。

方案二:临时忽略警告(过渡方案,不推荐)

如果暂时因为依赖库未更新等原因无法修改配置,可以在settings.py的最开头添加代码来过滤特定警告:

import warnings

# 忽略Allauth的这两个弃用警告
warnings.filterwarnings(
    "ignore",
    message="app_settings.USERNAME_REQUIRED is deprecated, use: app_settings.SIGNUP_FIELDS['username']['required']"
)
warnings.filterwarnings(
    "ignore",
    message="app_settings.EMAIL_REQUIRED is deprecated, use: app_settings.SIGNUP_FIELDS['email']['required']"
)

这个方法只是“隐藏”警告,并没有解决根本问题,所以优先推荐方案一,这样你的配置也更规范。

备注:内容来源于stack exchange,提问作者Faith Baghan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 19:39:35