Когда я создаю пользователя на странице администратора, я не могу войти в систему
В 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