Я могу войти в систему только с учетной записью администратора, но мне нужно сделать это с помощью пользовательской модели пользователя

Пользователи могут зарегистрироваться без проблем, но они не могут войти, только суперпользователь Я использую пользовательскую модель пользователя, так что я могу войти в систему, используя только email и пароль, я уже пытался использовать встроенные шаблоны django для входа, но они не работают, они выдают ту же ошибку

Когда я пытаюсь войти в систему как обычный пользователь, он выдает мне эту ошибку

<ul class="errorlist"><li>__all__<ul class="errorlist nonfield"><li>Invalid login</li></ul></li></ul>

Мой models.py

class CustomUserManager(BaseUserManager):

def create_user(self, email, username, password=None):
    if not email:
        raise ValueError("Users must have an email address")
    if not username:
        raise ValueError("Users must have a username")
    
    user = self.model(
        email = self.normalize_email(email),
        username = username,
    )

    user.set_password(password)
    user.save(using = self.db)
    return user

def create_superuser(self, email, username, password):

    user = self.create_user(
        email = self.normalize_email(email),
        password = password,
        username = username,
    )

    user.is_admin = True
    user.is_staff = True
    user.is_superuser = True
    user.save(using = self.db)

class CustomUser(AbstractBaseUser):
email = models.EmailField(verbose_name="email", max_length=150, unique=True)
username = models.CharField(max_length=150, unique=True)
# password = models.CharField(max_length=150)
date_joined = models.DateTimeField(verbose_name="date joined", auto_now_add=True)
last_login = models.DateTimeField(verbose_name="last login", auto_now=True)
is_admin = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)

USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username']

objects = CustomUserManager()

def __str__(self):
    return self.username 

def has_perm(self, perm, obj=None):
    return self.is_admin

def has_module_perms(self, app_label):
    return True

Мой forms.py

class login_form(forms.ModelForm):

password = forms.CharField(widget=forms.PasswordInput())


class Meta:
    model = CustomUser
    fields = ('email', 'password')

def clean(self):
    email = self.cleaned_data['email']
    password = self.cleaned_data['password']
    if not authenticate(email = email, password = password):
            raise forms.ValidationError("Invalid login")

Мой views.py

from django.contrib.auth import authenticate, login as auth_login

def login(request):

#The user is already logged
user = request.user
if user.is_authenticated:
    return redirect("/dashboard/")

#Form sended
if request.method == "POST":
    form = login_form(request.POST)

    #The form passed the validation
    if form.is_valid():
        print('The form is valid')

        email = request.POST.get('email')
        email = BaseUserManager.normalize_email(email)
        password = request.POST.get('password')

        user = authenticate(email = email, password = password)

        if user is not None:
            print('Login sucesfull')
            auth_login(request, user)
            return redirect('/dashboard/')
    else:
        print(form.errors)

#The form is no sended
else:
    form = login_form()


return render(request, 'ClientApp_pages/login.html', {"form":form})

Логин.html

    <div class="login">
    <form action="" method="POST">{% csrf_token %}

    {% if form.errors %}
        {% for field in form %}
            {% for error in field.errors %} 
                <div class="alert alert-danger">
                    <strong style="color: red;">{{ error|escape }}</strong>
                </div>
            {% endfor %}
        {% endfor %}
    {% endif %}

        <ul>
            <li>
                <label for="{{ form.status.id_for_label }}">Email : </label>
                {{ form.email }}
            </li>

            <li>
                <label for="{{ form.status.id_for_label }}">Password : </label>
                {{ form.password }}
            </li>
        </ul>

        <input type="submit" value="Ok" >

        
    </form>
</div>
Вернуться на верх