Когда я создаю пользователя на странице администратора, я не могу войти в систему

В django я создаю базу данных пользователей, но у меня есть проблема с этим. Когда я пробую python3 manage.py createsuperuser это работает нормально, но когда я пытаюсь создать пользователя на странице администратора я могу создать пользователя, но пароль пользователя не хэшируется и в шаблоне входа я не могу войти .

< <
def loginacc(request):
if request.method == "POST":
    tcNo = request.POST.get("tcNo")
    password = request.POST.get("password")

    user = authenticate(request, tcNo=tcNo, password=password)

    if user is not None:
        login(request, user)
        return render(request, "home/home.html")
    else:
        return render(request, "accounts/accounts.html", {"error": "Name or password is wrong . "})

return render(request, 'accounts/accounts.html')
login views.py :

student models.py :

class Student(AbstractBaseUser):
email = models.EmailField(max_length=255, unique=True)
tcNo = models.IntegerField(unique=True)
first_name = models.CharField(max_length=255)
last_name = models.CharField(max_length=255)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
nickname = models.CharField(max_length=255, blank=True, null=True)
objects = StudentBaseUserManager()

USERNAME_FIELD = 'tcNo'
REQUIRED_FIELDS = ['first_name', 'last_name', 'email', "nickname"]

def save(self, *args, **kwargs):
    self.nickname = self.first_name + "-" + self.last_name
    return super(Student, self).save(*args, **kwargs)

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

def has_module_perms(self, app_label):
    return True

def __str__(self):
    return self.email

class StudentBaseUserManager(BaseUserManager):
def create_user(self, tcNo, first_name, nickname, last_name, email, password=None):
    if not email:
        raise ValueError('Users must have an email address')

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

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

def create_superuser(self, tcNo, nickname, first_name, last_name, email, password):
    user = self.create_user(email=email,
                            last_name=last_name,
                            nickname=nickname,
                            first_name=first_name,
                            password=password,
                            tcNo=tcNo,
                            )
    user.is_admin = True
    user.is_staff = True

    user.save(using=self._db)
    return user
Вернуться на верх