Authentification avec Django
Bonjour à tous !
J'ai fait une fonction afin que les utilisateurs puissent se connecter mais elle ne fonctionne pas, elle agit comme une fonction de création de compte et donc quand j'essaie de me connecter, j'ai l'erreur "Un objet User avec ce champ Username existe déjà." Voici les fonctions en question :
Code:
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| from django.shortcuts import render, redirect
from .forms import UserSignUpForm, ParagraphErrorList, UserSignInForm
from django.contrib import messages
from .models import User
from django.contrib.auth import authenticate, login
def signup(request):
if request.method == 'POST':
form = UserSignUpForm(request.POST, error_class=ParagraphErrorList)
if form.is_valid():
email = form.cleaned_data['email']
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user = User.objects.filter(email=email, username=username)
if not user.exists():
user = User.objects.create(
email=email,
username=username,
password=enc_password
)
messages.success(request, 'Votre compte a bien été créé, vous pouvez vous connecter !')
return redirect('/signin/')
else:
form = UserSignUpForm()
return render(request, 'store/signup.html', {'form': form})
def signin(request):
if request.method == "POST":
form = UserSignInForm(request.POST)
if form.is_valid():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
return redirect('home')
else:
messages.info(request, "Le nom d'utilisateur ou le mot de passe est incorrect.")
else:
form = UserSignInForm()
return render(request, 'store/signin.html', {'form': form}) |
La fonction de création de compte fonctionne parfaitement mais je ne vois pas pourquoi celle de connexion ne fonctionne pas. Est-ce qu'il y a une erreur quelque part ?
Merci à tous pour votre aide !