Django: Невозможно войти в систему после успешной регистрации

Когда я пытаюсь войти в систему после успешной регистрации, я продолжаю получать ошибку. Возможно, это связано с тем, что пароль не хэшируется для подтверждения пароля, сохраненного в базе данных, потому что после регистрации я вижу хэшированный пароль. Я также установил для пользователя is_active значение true. Я в полном замешательстве, почему это происходит

models.py

from locale import normalize
from django.db import models
from django.contrib.auth.models import AbstractBaseUser,BaseUserManager

# Create your models here.
class MyAccountManager(BaseUserManager):
    def create_user(self,first_name,last_name,username,email,password=None):
        if not email:
            raise ValueError("Enter valid email address")

        if not username:
            raise ValueError("User must have a username")

        user = self.model(
            email = self.normalize_email(email),
            username = username,
            first_name = first_name,
            last_name = last_name,
        )

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

   #Creating a user with admin like privileges     
    def create_super_user(self,first_name,last_name,username,email,password=None):
        user = self.create_user(
            first_name=first_name,
            last_name=last_name,
            username=username,
            email=self.normalize_email(email),
            password=password
        )
        #assigning privileges to the super user
        user.is_active=True
        user.is_admin=True
        user.is_superadmin=True
        user.is_staff=True

        user.save(using=self._db)
        return user
        
class Account(AbstractBaseUser):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    username = models.CharField(max_length=100,unique=True)
    email = models.CharField(max_length=100,unique=True)
    password = models.CharField(max_length=100)

    date_joined = models.DateTimeField(auto_now_add=True)
    last_login = models.DateTimeField(auto_now_add=True)
    is_active = models.BooleanField(default=False)
    is_admin = models.BooleanField(default=False)
    is_superadmin = models.BooleanField(default=False)
    is_staff = models.BooleanField(default=False)

    #customizing the default admin panel fields
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['username','first_name','last_name']

    objects = MyAccountManager()

    def __str__(self):
        return self.email

    def has_perm(self,perm,obj=None):
        return self.is_admin

    def has_module_perm(self,add_label):
        return True

views.py

from django.http import HttpResponse
from django.shortcuts import render, redirect
from .models import Account
from .forms  import RegistrationForm
from django.contrib import auth,messages
from django.contrib.auth import login, authenticate

# Create your views here.
def signup(request):
    if request.method=="POST":
        form = RegistrationForm(request.POST)#contain all form values
        if form.is_valid():
            first_name = form.cleaned_data['first_name']
            last_name = form.cleaned_data['last_name']
            email = form.cleaned_data['email']
            password = form.cleaned_data['password']
            username = form.cleaned_data['username']
            user = Account.objects.create_user(first_name=first_name,last_name=last_name,email=email,username=username,password=password)#this method is present in models.py file
            user.is_active=True
            user.save()

            messages.success(request,"Your account has been created!")
    else:
        form = RegistrationForm()
    context = {
        'form':form,
    }
    return render(request,'signup.html',context)

def login(request):
    if request.method == "POST":
        email = request.POST['email']
        password = request.POST['password']

        user = auth.authenticate(email=email,password=password)

        if user is not None:
            auth.login(request,user)
            messages.success(request,"You are now logged in")
            return redirect('home')
        else:
            messages.error(request,"Invalid login credentials")
            return redirect('login')
    return render(request,'login.html')

login.html

Следуйте этому руководству. Я думаю, что вы создали неправильную учетную запись. https://docs.djangoproject.com/en/4.0/intro/tutorial07/

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