Я хочу, щоб 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)
Чи існує якийсь інший варіант входу, крім отримання спочатку імені користувача?