Форма регистрации Django выдает ошибку, когда пароль не может пройти валидацию

Я пытаюсь сделать регистрацию пользователя, с автоматическим входом в систему. И это работает. Но когда пароли разные, или не проходят валидацию, то сообщения от формы нет, выдает ошибку: AttributeError at /accounts/register/ У объекта 'AnonymousUser' нет атрибута '_meta'. Я думаю, что ошибка возникает из-за строки login(request, self.object). Но я не уверен, что нужно сделать, чтобы все работало как нужно. Заранее спасибо. Надеюсь, кто-нибудь сможет мне помочь

моя модель:

class AppUser(auth_models.AbstractBaseUser, auth_models.PermissionsMixin):
    email = models.EmailField(
        unique=True,
        blank=False,
        null=False,
    )

    is_staff = models.BooleanField(
        default=False,
        blank=False,
        null=False,
    )

    USERNAME_FIELD = 'email'

    objects = AppUserManager()

моя форма:


class SignUpForm(auth_forms.UserCreationForm):
    class Meta:
        model = UserModel
        fields = (UserModel.USERNAME_FIELD, 'password1', 'password2',)
        field_classes = {
            'email': auth_forms.UsernameField,
        }

Мое мнение:

class SignUpView(views.CreateView):
    template_name = 'accounts/user/register-user-page.html'
    form_class = SignUpForm
    success_url = reverse_lazy('home')

    def post(self, request, *args, **kwargs):
        response = super().post(request, *args, **kwargs)
        login(request, self.object)

        return response

Я пытался решить проблему переопределением метода clean() в форме, но это не сработало.

Вам необходимо переопределить form_valid() вместо post().

from django.http import HttpResponseRedirect

def form_valid(self, form):
    user = form.save() #save the user
    login(request, user)
    return HttpResponseRedirect(self.get_success_url())
Вернуться на верх