Django:所有授权都使用电子邮件创建帐户 - 唯一约束失败。显示消息而不是给出错误

Django: all auth create account with email - unique constraint failed. Display message instead of giving an error

我正在使用 djnago all-auth 创建自定义用户帐户。使用电子邮件和密码创建帐户时,如果使用电子邮件的帐户已经存在,则会出现错误(UNIQUE 约束失败:account_emailaddress.email),但我想显示消息,说明使用此电子邮件的帐户已经存在,而不是抛出错误。处理这个问题的最佳方法是什么?一般来说,我会使用 AJAX 来验证和显示我自己的观点的消息,但我不知道如何在这里处理 django all-auth 包。

我建议您覆盖 signup/login 表单以管理此错误。你检查过文档了吗? https://django-allauth.readthedocs.io/en/latest/forms.html

我认为 this answer 与您的问题有关。

this answer:

中给出了比较相似的方法
  1. 创建继承 SignupView 并覆盖表单 class
  2. 的自定义视图
  3. 创建一个继承自 SignupForm 并覆盖电子邮件验证消息的自定义表单
  4. 在你自己的 urls.py 之后添加以下 include('allauth.urls') 来覆盖 account_signup url

由于 djangoallauth 会处理唯一约束,因此如果用户尝试使用您的数据库中已存在的电子邮件 ID 的任何社交媒体帐户登录,则您不必在您的字段中添加 unique=True 它 djangoallauth 将简单地忽略并将不要在您的用户模型中设置电子邮件 ID。 :) 我正在手动处理我的独特字段,即电子邮件字段