Я получаю ошибку при попытке войти в учетную запись на моем сайте

Я не могу войти ни в одну учетную запись, потому что получаю ошибку:

Пожалуйста, введите правильный email и пароль для учетной записи сотрудника. Обратите внимание, что оба поля могут быть чувствительны к регистру. (для пользователя admin)

И

Пожалуйста, введите правильный email и пароль. Обратите внимание, что оба поля могут быть чувствительны к регистру.

Это происходит после обновления профиля на странице подробной информации о профиле. Меня просто перебрасывает на страницу входа в систему после нажатия кнопки Update на странице обновления профиля.

Вот весь связанный код:

models.py

  
class Customer(AbstractUser):
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['username']
    
    objects = UserManager()
    
    customer_id = models.AutoField(primary_key=True)
    first_name = models.CharField(max_length=50, null=True, blank=True)
    last_name = models.CharField(max_length=50, null=True, blank=True)
    username = models.CharField(max_length=30, null=True, blank=True)
    phone = models.CharField(max_length=10, default='', null=True,  blank=True)
    email = models.EmailField(validators=[validators.EmailValidator()], unique=True)
    description  = models.TextField(max_length=1000,blank=True, null=True)
    gender = models.CharField('Gender', max_length=10, choices=Gender.choices,
                                default='Male', null=True)
    
    featured_img = models.ImageField(verbose_name='A profile image',
                                     upload_to='profiles', 
                                     default='products/profile_default.jpg')
    
    password = models.CharField(max_length=100, null=True, blank=True)
    date_created = models.DateTimeField(auto_now_add=True, null=True)

    def __str__(self):
        return f'{self.email} {self.username} {self.customer_id}'
    
    @staticmethod
    def get_customer_by_email(email):
        try:
            return Customer.objects.get(email=email)
        except:
            return False

    def exists(self):
        if Customer.objects.filter(email=self.email):
            return True

        return False

    class Meta:
        verbose_name = 'Customer'
        verbose_name_plural = 'Customers'
        # unique_together = ['email']


class Profile(models.Model):
    # USERNAME_FIELD = 'email'
    
    profile_id = models.AutoField(primary_key=True)
   
    date_created = models.DateTimeField(auto_now_add=True, null=True)
    updated = models.DateTimeField(auto_now=True, null=True)
    user = models.ForeignKey(Customer, on_delete=models.CASCADE,
                                    related_name="customer", null=True)
  
    class Meta:
        verbose_name = 'Profile'
        verbose_name_plural = 'Profiles'
        # unique_together = ['email']

    def __str__(self):
        return f' {self.profiled}'


        

managers.py


class UserManager(BaseUserManager):
    def create_user(self, email, first_name=None, description=None, gender=None, featured_img=None, username=None, last_name=None, phone=None, password=None):
        if not email:
            raise ValueError("User must have an email")
        if not password:
            raise ValueError("User must have a password")

        user = self.model(
            email=self.normalize_email(email),
        )
        user.first_name = first_name 
        user.username = username 
        user.last_name = last_name 
        user.password = make_password(password)  # change password to hash
        user.phone = phone 
        user.featured_img = featured_img
        user.description = description
        # user.profile = profile
        user.gender = gender
        user.admin = False
        user.staff = True
        user.active = True
        user.save(using=self._db)
        return user
        
    def create_superuser(self, email, username, password):
        if not email:
            raise ValueError("User must have an email")
        if not password:
            raise ValueError("User must have a password")

        user = self.model(
            email=self.normalize_email(email)
        )

        user.username = username 

        user.password = make_password(password)  # chang password to hash

        user.admin = True
        user.staff = True
        user.active = True
        user.save(using=self._db)
        return user

views.py

signals.py



@receiver(post_save, sender=Customer)
def create_profile(sender, instance, created, **kwargs):
    user = instance
    if created:
        print(user)
        Profile.objects.create(
           


            user=user
            
        )
        
@receiver(pre_save, sender=Customer)
def update_profile(sender, instance, **kwargs):
    # print(instance)
    profile = instance
    if profile.customer_id is not None:
     
        Profile.objects.update(user=profile)
        

@receiver(post_delete, sender=Customer)
def delete_profile(sender, instance, **kwargs):
    user = instance
    customer = Customer.objects.filter(email=user.email).first()
    if user and customer:
        # profile.delete()
        customer.delete()
    print('Not exists...')
    

forms.py


class SignUpForm(UserCreationForm):

    class Meta:
        model = Customer
        fields = ('username','phone', 'first_name', 'last_name', 'email', 'featured_img') 
        
        # def __init__(self, *args, **kwargs):
        #     super(SignUpForm, self).__init__(*args, **kwargs)
            # for name, field in self.fields.items():
            #     field.widget.attrs.update({'class': 'input'})


  


class ProfileUpdateForm(forms.ModelForm):
    password1 = forms.CharField(
        label="Password",
        strip=False,
        widget=forms.PasswordInput(attrs={"autocomplete": "new-password"}),
        help_text=password_validation.password_validators_help_text_html(),
        required=False
    )
    password2 = forms.CharField(
        label="Password confirmation",
        widget=forms.PasswordInput(attrs={"autocomplete": "new-password"}),
        strip=False,
        help_text="Enter the same password as before, for verification.",
        required=False
    )
    class Meta:
        model = Customer
        fields = ('username', 'phone', 'first_name', 'last_name', 'email', 'featured_img', 'description', 'gender')
        
    def save(self, commit=True):
        customer = super().save(commit=False)
        
        email = self.cleaned_data.get('email')
        customer.email = email.lower()
        # customer.password = customer.set_password(self.cleaned_data['password1'])
        
        if commit:
            if customer.exists():
                super(ProfileUpdateForm, self).save()
                return customer
            
            

urls.py


from django.contrib.auth import views as auth_views

app_name = 'user-auth'

urlpatterns = [

    path('register/', views.signup, name='register'),
    path('accounts/login/', auth_views.LoginView.as_view(
                            template_name='auth/login/login.html',
                            success_url='products/'),
                            name='login'
                            ),
    path('accounts/logout/', auth_views.LogoutView.as_view(), name='logout'),
    path('profile-detail/<int:pk>/', views.ProfileDetailView.as_view(), name='profile-detail'),
    path('profile-update/<int:pk>/', views.UpdateProfileView.as_view(),
                                            name='profile-update'),
    path('profile-delete/<int:pk>/', views.DeleteProfileView.as_view(),
                                            name='profile-delete'),
    
    
    
] 


Я пытался удалить свою базу данных и заполнить ее заново. Затем я попытался выяснить, почему email или пароль неверны. Возможно, они неверны в базе данных. Но я понятия не имею, что происходит

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