Проблема с аутентификацией пользователей в 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'
Я жду, когда аутентификация сработает и созданные пользователи смогут войти на мой сайт. Я также хотел бы понять более подробно, почему суперпользователь может быть аутентифицирован, а пользователь, созданный на сайте, нет.