Problem with user authentication in django

For a reason unknown to me, when authenticating a user, I enter the following data: email and password, as a result, super users are authenticated, but ordinary users are not.

What can be done about this? Has anyone encountered such a problem? Please help me solve this, I'm completely new to Django.

Here are the files in the project (if you need any other files, write):

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'

I am waiting for the authentication to work and the created users to be able to log in to my site. I would also like to understand in more detail why the superuser can be authenticated, but the user created on the site cannot.

Back to Top