Je veux que django authentifie les utilisateurs par e-mail, et non par nom d'utilisateur. Une façon de faire est de fournir la valeur de l'email comme valeur du nom d'utilisateur, mais je ne veux pas cela. La raison en est que j'ai une url /profile/<username>/
donc je ne peux pas avoir d'url /profile/abcd@gmail.com/
.
Une autre raison est que tous les emails sont uniques, mais il arrive parfois que le nom d'utilisateur soit déjà pris. C'est pourquoi je crée automatiquement le nom d'utilisateur en tant que fullName_ID
.
Comment puis-je changer le fait que Django s'authentifie avec l'email ?
Voici comment je crée un utilisateur.
username = `abcd28`
user_email = `abcd@gmail.com`
user = User.objects.create_user(username, user_email, user_pass)
C'est ainsi que je me connecte.
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)
Existe-t-il un autre moyen de se connecter, à part obtenir le nom d'utilisateur en premier ?