Ich möchte, dass Django Benutzer per E-Mail und nicht über Benutzernamen authentifiziert. Eine Möglichkeit kann darin bestehen, einen E-Mail-Wert als Benutzernamenwert anzugeben, aber das möchte ich nicht. Grund dafür ist, dass ich eine URL habe /profile/<username>/, daher kann ich keine URL haben /profile/abcd@gmail.com/.
Ein weiterer Grund ist, dass alle E-Mails eindeutig sind, aber manchmal wird der Benutzername bereits vergeben. Daher erstelle ich den Benutzernamen automatisch als fullName_ID.
Wie kann ich einfach ändern, damit sich Django per E-Mail authentifiziert?
So erstelle ich einen Benutzer.
username = `abcd28`
user_email = `abcd@gmail.com`
user = User.objects.create_user(username, user_email, user_pass)
So logge ich mich ein.
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)
Gibt es eine andere Möglichkeit, sich anzumelden, als zuerst den Benutzernamen zu erhalten?