Я хочу, чтобы django аутентифицировал пользователей по электронной почте, а не через usernames. Один из способов может предоставить значение электронной почты как значение имени пользователя, но я этого не хочу. Причина в том, что у меня есть url /profile/<username>/
, поэтому у меня не может быть url /profile/[email protected]/
.
Другая причина в том, что все электронные письма уникальны, но иногда случается, что имя пользователя уже принято. Следовательно, я автоматически создаю имя пользователя как fullName_ID
.
Как я могу просто изменить, пусть Django аутентифицируется с помощью электронной почты?
Вот как я создаю пользователя.
username = `abcd28`
user_email = `[email protected]`
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)
Есть ли какой-либо другой логин помимо первого имени пользователя?