如何使用电子邮件作为Django注册的用户名



我是django的新手,使用django需要用户名和密码的UserRegistrationForm创建注册表。我想用电子邮件代替用户名。我该怎么做?

def register(request):
if request.method == 'POST':
form = UserRegisterForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
messages.success(request,f'Account Created For {username} !')
return redirect('starting-page')
else:   
form = UserRegisterForm()
return render(request,'users/register.html',{'form': form})

email用作username的第一步是通过扩展AbstractBaseUser来定制User模型,类似于以下内容:

from django.contrib.auth.models import AbstractUser, PermissionsMixin
from django.utils.translation import gettext_lazy as _ 
... 
class CustomUser(AbstractBaseUser, PermissionsMixin):
first_name = models.CharField(_('first name'), max_length=150, blank=True)
last_name = models.CharField(_('last name'), max_length=150, blank=True)
email = models.EmailField(_('email address'), unique=True)
...

USERNAME_FIELD = 'email'

然后,在settings.py中,您必须设置自定义模型用户:

AUTH_USER_MODEL = 'your_app.CustomUser'

您可以查看Django Registrations文档,根据您的工作流程查看有关某些必需字段或方法的任何特定信息。

最新更新