Пользовательская модель входа пользователя django - PullRequest
0 голосов
/ 17 января 2020

я сделал пользовательский 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
...