Пароль аутентификации Django возвращает False
Я пытаюсь создать систему аутентификации с помощью Django с пользовательским бэкендом и классом пользователя, но каждый раз, когда я пытаюсь аутентифицироваться с существующим пользователем и паролем в моей базе данных Postgresql, функция check_password()
всегда возвращает False
и я не могу продолжить.
Вот код для UserBackend на backends.py
from django.contrib.auth.backends import ModelBackend
from .models import user
class UserBackend(ModelBackend):
def authenticate(self, **kwargs):
username = kwargs['username']
password = kwargs['password']
print('user: ', username)
print('pass: ', password)
#try:
user_ = user.objects.get(username=username)
try:
print(user_.check_password(password))
if user_.check_password(password) is True: #Here check_password() is always false
return user_
except user.DoesNotExist:
pass
def get_user(self, user_id):
try:
return user.objects.get(pk=user_id)
except user.DoesNotExist:
return None
views.py
def signin(request):
now = datetime.now()
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = UserBackend.authenticate(ModelBackend(),username=username, password=password)
if user is not None:
#auth.login(request, user)
return redirect('/index')
else:
messages.info(request, 'invalid username or password')
return redirect("/signin")
else:
return render(request,'signin.html')
return render(request, 'signin.html')
models.py
class user(AbstractBaseUser):
id = models.AutoField(primary_key=True)
username = models.TextField()
real_name = models.TextField()
email = models.TextField()
password = models.TextField()
description = models.TextField()
last_login = models.DateField()
created_at = models.DateField()
class Meta:
managed = False
db_table = 'user'
def __str__(self) -> str:
return self.username
что я делаю не так?