Я хочу, чтобы django аутентифицировал пользователей по электронной почте, а не через usernames. Один из способов может предоставить значение электронной почты как значение имени пользователя, но я этого не хочу. Причина в том, что у меня есть url /profile/<username>/
, поэтому у меня не может быть URL-адрес /profile/[email protected]/
.Django - Войдите с электронной почтой
Другая причина, заключающаяся в том, что все электронные письма уникальны, но иногда случается, что имя пользователя уже принято. Следовательно, я автоматически создаю имя пользователя как 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)
Есть ли какой-либо другой логин помимо получения имени пользователя в первую очередь?
Ницца. Thxs. Вопрос также был очень полезен @PythonEnthusiast. – AlessMascherpa
Ошибка в коде: UserMode.DoesNotExist – cyberbudy
Использование django 1.9.8 У меня есть ошибка: у объекта 'EmailBackend' нет атрибута 'get_user'. Решено путем добавления метода get_user в соответствии с этим методом http: // stackoverflow.com/a/13954358/2647009 – baltasvejas