Форма регистрации 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())