Аутентификация Django всегда возвращает none

Похоже, что моя аутентификация не работает. У меня есть регистрация и все остальное, не работает только аспект входа и аутентификации. Я не уверен, почему.

Я не уверен, почему мой django auth возвращает none. В моих настройках есть следующее:


AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend',
    'UniLinkedApp.auth.MyAuthBackEnd',
)

У меня мои модели такие:

class Register(models.Model):
    username = models.CharField(max_length = 200)
    email = models.EmailField(max_length = 200)
    password = models.CharField(max_length = 200)
    university = models.CharField(max_length=50)
    major = models.CharField(max_length = 200)
    
    def __str__(self):
        return self.user
    
class MyAccountManager(BaseUserManager):
    def create_user(self, username, email, password, university, major):
        if not email:
            raise ValueError("Users must have an email address")
        if not username:
            raise ValueError("Users must have an username")

        user  = self.model(
                username=username,
                email=self.normalize_email(email),
                password = password,
                university = university,
                major = major,
            )

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

    def create_superuser(self, email, username, password):
        user  = self.create_user(
                username=username,
                email=self.normalize_email(email),
                password=password,
            )
        user.is_admin = True
        user.is_staff = True
        user.is_superuser = True
        user.save(using=self._db)
        return user


class Account(AbstractBaseUser):
    
    username                = models.CharField(max_length = 200)
    email                   = models.EmailField(max_length = 200)
    password                = models.CharField(max_length = 200)
    university              = models.CharField(max_length=50)
    major                   = models.CharField(max_length = 200)
    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 = 'username'
    objects = MyAccountManager()

    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

У меня есть формы следующего вида:

class RegisterForm(forms.ModelForm):
    
    password = forms.CharField(label='Password', widget=forms.PasswordInput)
    class Meta:
        model = Account
        fields = ['username', 'email', 'password', 'university', 'major']
        
class AccountAuthenticationForm(forms.ModelForm):

    password = forms.CharField(label='Password', widget=forms.PasswordInput)

    class Meta:
        model = Account
        fields = ('username', 'email','password', 'university', 'major')

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


Мой аутентификатор: :

class MyAuthBackEnd(ModelBackend):
    def authenticate(self, **kwargs):
        
        username = kwargs['username']
        password = kwargs['password']
        try:
            account = Account.objects.get(username=username)
            if account.check_password(password) is True:
                return account
        except Account.DoesNotExist:
            pass

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

Я пробовал всевозможные вещи, но не уверен, как это исправить.

Это мой логин как метод:

    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        
        user = MyAuthBackEnd.authenticate(request, username=username, password = password)
        #print(user)
        #print(username, password)
        if user is not None:
            print('Test')
            login(request, username)
            return redirect('home')
        
        else:
            messages.info(request, 'Username or Password is incorrect')
Вернуться на верх