Как использовать электронную почту в качестве имени пользователя для регистрации в Django

Я новичок в django и создаю форму регистрации, используя django's UserRegistrationForm, которая требует имя пользователя и пароль. Я хочу использовать email вместо имени пользователя. Как я могу это сделать?

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 является настройка модели User путем расширения AbstractBaseUser, примерно так:

from django.contrib.auth.models import AbstractUser, PermissionsMixin

... 

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 docs, чтобы узнать какую-либо конкретную информацию о некоторых необходимых полях или методах в зависимости от вашего рабочего процесса.

Вернуться на верх