gpt4 book ai didi

python - Django 注册 Redux : how to change the unique identifier from username to email and use email as login

转载 作者:太空宇宙 更新时间:2023-11-03 12:58:30 24 4
gpt4 key购买 nike

我在我的项目中使用 django-registration-redux 进行用户注册。它使用默认的 User 模型,该模型使用 username 作为唯一标识符。

现在我们要丢弃 username 并使用 email 作为唯一标识符。

而且我们还想使用 email 而不是 username 登录。

如何实现?

是否可以在不更改 AUTH_USER_MODEL 设置的情况下做到这一点?

因为官方文档说

If you intend to set AUTH_USER_MODEL, you should set it before creating any migrations or running manage.py migrate for the first time.

最佳答案

你可以像这样覆盖注册表

from registration.forms import RegistrationForm
class MyRegForm(RegistrationForm):
username = forms.CharField(max_length=254, required=False, widget=forms.HiddenInput())

def clean_email(self):
email = self.cleaned_data['email']
self.cleaned_data['username'] = email
return email

然后将此添加到设置文件(阅读此 link 了解详细信息)

REGISTRATION_FORM = 'app.forms.MyRegForm'

这也会将电子邮件设置为用户名字段,然后一切正常,因为电子邮件现在是用户名。

唯一的问题是用户名字段在数据库中的最大长度为 30。因此,超过 30 个字符的电子邮件将引发数据库异常。要解决这个覆盖用户模型的问题(请阅读 this 了解详细信息)。

关于python - Django 注册 Redux : how to change the unique identifier from username to email and use email as login,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31356535/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com