Chcę, aby django uwierzytelniało użytkowników przez e-mail, a nie przez nazwy użytkowników. Jednym ze sposobów może być podanie wartości e-mail jako wartości nazwy użytkownika, ale ja tego nie chcę. Powodem jest to, że mam adres URL /profile/<username>/
, dlatego nie mogę mieć adresu URL /profile/abcd@gmail.com/
.
Innym powodem jest to, że wszystkie e-maile są unikalne, ale czasami zdarza się, że nazwa użytkownika jest już zajęta. Dlatego automatycznie tworzę nazwę użytkownika jako fullName_ID
.
Jak mogę po prostu zmienić zezwolenie Django na uwierzytelnianie za pomocą poczty e-mail?
W ten sposób tworzę użytkownika.
username = `abcd28`
user_email = `abcd@gmail.com`
user = User.objects.create_user(username, user_email, user_pass)
Tak się loguję.
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)
Czy istnieje inny sposób logowania oprócz uzyskania nazwy użytkownika w pierwszej kolejności?