Проблема с аутентификацией пользователей в django

По неизвестной мне причине при аутентификации пользователя я ввожу следующие данные: email и пароль, в результате суперпользователи аутентифицируются, а обычные пользователи - нет.

Что можно с этим сделать? Кто-нибудь сталкивался с такой проблемой? Пожалуйста, помогите мне решить эту проблему, я совсем новичок в Django.

Вот файлы в проекте (если вам нужны другие файлы, напишите):

views.py

from django.contrib.auth import authenticate, login
from django.http import HttpResponse
from django.shortcuts import render, redirect
from users.models import User

def register(request):
    if request.method == "POST":
        username = request.POST.get("username")
        email = request.POST.get("email")
        password = request.POST.get("password")
        # password2 = request.POST.get("password2")
        phone_number = request.POST.get("phone_number")

        user = User (
            username = username,
            email = email, 
            password = password,
            phone_number = phone_number
        )
        user.save()
        return redirect('main:index')
    return render(request, 'users/register.html')

def user_login(request):
    if request.method == "POST":
        email = request.POST.get("email")
        password = request.POST.get("password")
        user = authenticate(email=email, password=password)
        if user and user.is_active:
            login(request, user)
            return HttpResponse('Authenticate!')
        else:
            return HttpResponse('No Login!')
    return render(request, 'users/login.html')

models.py

from django.db import models
from phonenumber_field.modelfields import PhoneNumberField
from django.contrib.auth.models import AbstractUser
from users.managers import CustomUserManager

class User (AbstractUser):
    username = models.CharField(max_length=20, unique=True)
    email = models.EmailField(unique=True)
    password = models.CharField(null=True, blank=False, max_length=30)
    phone_number = PhoneNumberField(region="IN", unique=True, null=True, blank=False)

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

    objects = CustomUserManager()

    def __str__(self):
        return self.username

managers.py

from django.contrib.auth.base_user import BaseUserManager

class CustomUserManager(BaseUserManager):
    use_in_migrations = True

    def _create_user(self, email=None, password=None, username=None, **extra_fields):
        if email:
            email = self.normalize_email(email)

        user = self.model(username=username, **extra_fields)    
        user.email = email
        user.set_password(password)
        user.save(using=self._db)
        return user
    
    def create_user(self, email=None, password=None, username=None, **extra_fields):
        extra_fields.setdefault('is_superuser', False)
        extra_fields.setdefault('is_staff', False)
        extra_fields.setdefault('is_active', True)

        return self._create_user(email, password, username, **extra_fields)
    
    def create_superuser(self, email=None, password=None, username=None, **extra_fields):
        extra_fields.setdefault('is_superuser', True)
        extra_fields.setdefault('is_staff', True)
        extra_fields.setdefault('is_active', True)

        return self._create_user(email, password, username, **extra_fields)

admin.py

from django.contrib import admin
from .models import User

admin.site.register(User)
class UserAdmin(admin.ModelAdmin):
    list_display = ('id', 'username')

settings.py

AUTH_USER_MODEL = 'users.User'

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

Вернуться на верх