Сохранение пароля работает, но вход в систему не происходит

Попытка сохранить хэшированный pw работает, но попытка войти в систему с именем_имя_и фамилией не работает. Т.е. если объединенный pw называется ThisPw, я должен иметь возможность хранить его в хэшированном виде и затем входить с ним.

    if add_form.is_valid(): 
        post = request.POST
        print(post['email'])
        new_password = post['first_name']+post['last_name']
        new_user = Profile.objects.create_user(
            email = post['email'],
            password=make_password(new_password),
            first_name=post['first_name'],
            last_name=post['last_name'],
            phone_number=post['phone_number'],
        )
        print(new_password)
        new_user.save()
        print(add_form)
        return redirect('add')

Не используйте make_password(), если вы передаете пароль в метод по умолчанию create_user().

    if add_form.is_valid(): 
        post = request.POST
        new_password = post['first_name']+post['last_name']
        new_user = Profile.objects.create_user(
            email = post['email'],
            password=new_password,
            first_name=post['first_name'],
            last_name=post['last_name'],
            phone_number=post['phone_number'],
        )
        new_user.save()
        return redirect('add')

По умолчанию вызывается метод create_user() user.set_password(password)

class UserManager(BaseUserManager):

    def _create_user(self, username, email, password, **extra_fields):
        """
        Create and save a user with the given username, email, and password.
        """
        # ...
        user.set_password(password)
        user.save(using=self._db)
        return user

    def create_user(self, username, email=None, password=None, **extra_fields):
        extra_fields.setdefault('is_staff', False)
        extra_fields.setdefault('is_superuser', False)
        return self._create_user(username, email, password, **extra_fields)


class AbstractBaseUser(models.Model):
    # Stores the raw password if set_password() is called so that it can
    # be passed to password_changed() after the model is saved.
    _password = None

    def set_password(self, raw_password):
        self.password = make_password(raw_password)
        self._password = raw_password
Вернуться на верх