Bonjour à vous, après avoir réussit à mettre en place l'authentification django j'aimerais maintenant pouvoir utiliser l'email à la place du pseudo. J'ai trouvé le paramètre "ACCOUNT_AUTHENTICATION_METHOD = 'email'" mais le seul changement c'est que je ne peux plus me connecter du tout, ni avec email, ni avec pseudo. Pour ceux qui ont l'habitude d'utiliser django et son authentification, votre aide serait plus que la bienvenue. Merci pour votre temps

forms.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
from django.contrib.auth import authenticate, get_user_model
from django import forms
User = get_user_model()
 
class ConnexionForm(forms.Form):
    email = forms.EmailField(label="Email", max_length=30)
    password = forms.CharField(label="Mot de passe", widget=forms.PasswordInput)

models.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
from django.contrib.auth.models import User, BaseUserManager
from django.db import models
 
class Profil(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    site_web = models.URLField(blank=True)
    inscrit_newsletter = models.BooleanField(default=False)
 
    def __str__(self):
        return "Profil de {0}".format(self.user.username)
views.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from django.contrib.auth import authenticate, login, logout
from django import forms
from .forms import ConnexionForm
from django.shortcuts import render, redirect
from django.urls import reverse
 
 
def connexion(request):
    error = False
 
    if request.method == "POST":
        form = ConnexionForm(request.POST)
        if form.is_valid():
            email = form.cleaned_data["email"]
            password = form.cleaned_data["password"]
            user = authenticate(email=email, password=password)
            if user:  
                login(request, user)  
            else: 
                error = True
    else:
        form = ConnexionForm()
 
    return render(request, 'connexion.html', locals())
 
def deconnexion(request):
    logout(request)
    return redirect(reverse('connexion'))