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