Quiero que django autentique a los usuarios por correo electrónico, no a través de nombres de usuario. Una forma puede ser proporcionar valor de correo electrónico como valor de nombre de usuario, pero no quiero eso. La razón es que tengo una URL /profile/<username>/, por lo tanto, no puedo tener una URL /profile/abcd@gmail.com/.
Otra razón es que todos los correos electrónicos son únicos, pero a veces sucede que el nombre de usuario ya está siendo tomado. Por lo tanto, estoy creando automáticamente el nombre de usuario como fullName_ID.
¿Cómo puedo dejar que Django se autentique con el correo electrónico?
Así es como creo un usuario.
username = `abcd28`
user_email = `abcd@gmail.com`
user = User.objects.create_user(username, user_email, user_pass)
Así es como me conecto.
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)
¿Hay alguna otra forma de iniciar sesión además de obtener el nombre de usuario primero?