Ich möchte Django Benutzer über E-Mail authentifizieren, nicht über Benutzernamen. Eine Möglichkeit kann darin bestehen, einen E-Mail-Wert als Benutzernamen anzugeben, aber das möchte ich nicht. Grund ist, ich habe eine URL /profile/<username>/
, daher kann ich keine URL /profile/[email protected]/
haben.Django - Login mit E-Mail
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 nur ändern lassen Django mit E-Mail authentifizieren?
So erstelle ich einen Benutzer.
username = `abcd28`
user_email = `[email protected]`
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 einen anderen Login als den Benutzernamen zuerst?
Nice one. Thxs. Frage war auch sehr nützlich @ PythonEnthusiast. – AlessMascherpa
Fehler im Code: UserMode.DoesNotExist – cyberbudy
Verwenden von Django 1.9.8 Ich habe einen Fehler: 'EmailBackend' Objekt hat kein Attribut 'get_user'. Gelöst durch Hinzufügen der 'get_user'-Methode gemäß diesem http: // stackoverflow.com/a/13954358/2647009 – baltasvejas