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 :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 ?
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
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})
Merci à tous pour votre aide !
Partager