Desidero che Django autentica gli utenti via e-mail, non tramite i nomi utente. Un modo può fornire il valore email come valore del nome utente, ma non lo voglio. Essendo la ragione, ho un url /profile/<username>/
, quindi non posso avere un url /profile/[email protected]/
.Django - Accedi con e-mail
Un altro motivo è che tutte le e-mail sono uniche, ma a volte capita che il nome utente sia già stato preso. Quindi sto creando automaticamente il nome utente come fullName_ID
.
Come posso semplicemente consentire a Django di autenticare con l'e-mail?
Ecco come creo un utente.
username = `abcd28`
user_email = `[email protected]`
user = User.objects.create_user(username, user_email, user_pass)
Questo è il modo di accesso.
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)
C'è qualche altro di accesso oltre a ottenere il nome utente prima?
Bello. Thxs. Anche la domanda è stata molto utile @PythonEnthusiast. – AlessMascherpa
Errore nel codice: UserMode.DoesNotExist – cyberbudy
Uso di django 1.9.8 Ho un errore: l'oggetto 'EmailBackend' non ha attributo 'get_user'. Risolto aggiungendo il metodo 'get_user' in base a questo http: // StackOverflow.com/a/13954358/2647009 – baltasvejas