Я хочу, чтобы django аутентифицировал пользователей по электронной почте, а не по именам пользователей. Один из способов - указать адрес электронной почты в качестве значения имени пользователя, но я этого не хочу. Причина в том, что у меня есть URL-адрес /profile/<username>/
, поэтому у меня не может быть URL-адреса /profile/abcd@gmail.com/
.
Другая причина в том, что все электронные письма уникальны, но иногда бывает, что имя пользователя уже используется. Следовательно, я автоматически создаю имя пользователя как fullName_ID
.
Как я могу просто изменить, чтобы Django аутентифицировался по электронной почте?
Вот как я создаю пользователя.
username = `abcd28`
user_email = `abcd@gmail.com`
user = User.objects.create_user(username, user_email, user_pass)
Вот как я вхожу в систему.
email = request.POST['email']
password = request.POST['password']
username = User.objects.get(email=email.lower()).username
user = authenticate(username=username, password=password)
login(request, user)
Есть ли какой-либо другой способ входа в систему, кроме получения имени пользователя?