я сделал пользовательский django пользователь, использующий abstractUser, поэтому я могу войти в систему, используя электронную почту вместо имени пользователя, но когда я пытаюсь аутентифицировать пользователей, используя мой вид входа в систему, он только аутентифицирует суперпользователей, это проблема с логикой моей реализации c или мне нужно внести некоторые изменения, чтобы это помогло, ребята, вот мой код:
from django.shortcuts import render
from django.contrib.auth import login, authenticate
from django.shortcuts import redirect
from .models import User
from django.contrib import messages
# Create your views here.
def home(request):
return render(request, 'base.html')
def signUp(request):
nom = request.POST.get('Nom')
prénom = request.POST.get('Prénom')
username = request.POST.get('Username')
email = request.POST.get('mail')
password = request.POST.get('Password')
wilaya = request.POST.get('Wilaya')
commune = request.POST.get('Commune')
adresse = request.POST.get('Adresse')
telephone = request.POST.get('Telephone')
fax = request.POST.get('Fax')
if (len(username) == 0) | (len(password) == 0) | (len(nom) == 0) | (len(prénom) == 0) | (len(email) == 0) | (len(wilaya) == 0) | (len(commune) == 0) | (len(adresse) == 0) | (len(telephone) == 0) | (len(fax) == 0):
messages.warning(request, "Rempilssez tous les champs")
return redirect('Traduction:home')
if len(password) == 0:
messages.warning(request, "Insérez un mot de passe")
return redirect('Traduction:home')
if User.objects.filter(email=email).exists():
messages.warning(request, "Cet Email est déjà prit")
return redirect('Traduction:home')
else:
user = User.objects.create(Nom=nom, Prénom=prénom, username=username, email=email, password=password, Wilaya=wilaya, Commune=commune, Adresse=adresse, Telephone=telephone, Fax=fax, is_client=True)
messages.info(request, "Votre compte a été créé")
return redirect('Traduction:home')
def Login(request):
email = request.POST['Email']
password = request.POST['Password']
user = authenticate(username=email, password=password)
if user is not None:
login(request, user)
messages.info(request, "Utilisateur authentifié")
return redirect('Traduction:home')
else:
messages.warning(request, "Utilisateur n'existe pas")
return redirect('Traduction:home')
вот также моя пользовательская модель
class User(AbstractUser):
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['Nom', 'Prénom', 'username']
is_client = models.BooleanField('client status', default=False)
is_translator = models.BooleanField('translator status', default=False)
Nom = models.CharField(max_length=50)
Prénom = models.CharField(max_length=30)
email = models.EmailField(max_length=255, unique=True)
Wilaya = models.CharField(max_length=20)
Commune = models.CharField(max_length=20)
Adresse = models.CharField(max_length=100)
Telephone = models.CharField(max_length=10)
Fax = models.CharField(max_length=20)
def __str__(self):
return self.Nom + ' ' + self.Prénom