有人知道怎么让django-registration用邮箱作为用户名吗?

3 投票
2 回答
1494 浏览
提问于 2025-04-16 04:00

我正在计划在我的网站上实现邮箱注册激活功能,这个网站很快就要上线了。我刚开始了解django-registration,也愿意看看其他在django上可用的邮箱注册激活系统。

我唯一的要求是,我的网站不使用用户名。用户是通过他们的邮箱和密码登录的。我想听听专家的意见,如何干净且安全地修改django-registration来满足这个需求。

如果有更简单且可扩展的解决方案,欢迎在这里分享。

2 个回答

0

Django 1.5 开始,我们可以自定义用户模型 auth.User,并且可以把 电子邮件 地址当作 用户名 来使用。

6

我们使用了 django-registration 这个工具,并且做了一些自定义设置。在这个过程中,我们重写了(或者说定义了)注册表单的 clean 方法:

def clean(self):
    ...
    # use the email as the username 
    if 'email' in self.cleaned_data:
        self.cleaned_data['username'] = self.cleaned_data['email']

还有其他的方法可以实现:

需要注意的是,默认情况下,用户名的长度只能是 30 个字符。如果你想要更长的用户名,就需要一些特别的处理:

撰写回答