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
views.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)
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'))
Partager