class RegisterCustomUserForm(forms.ModelForm):"""Форма, создающая пользователя без привилегий на основе указанного имени пользователя и пароля."""error_messages = {'password_mismatch': _('Пароли не совпадают.'),}password1 = forms.CharField(label=_("Пароль"), strip=False,widget=forms.PasswordInput(attrs={'autocomplete': 'new-password'}),help_text=password_validation.password_validators_help_text_html(),)password2 = forms.CharField(label=_("Подтверждение пароля"),widget=forms.PasswordInput(attrs={'autocomplete': 'new-password'}),strip=False,help_text=_("Введите пароль еще раз для подтверждения."),)class Meta:model = settings.AUTH_USER_MODELfields = ("email",)def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)if self._meta.model.USERNAME_FIELD in self.fields:self.fields[self._meta.model.USERNAME_FIELD].widget.attrs['autofocus'] = Truedef clean_password2(self):password1 = self.cleaned_data.get("password1")password2 = self.cleaned_data.get("password2")if password1 and password2 and password1 != password2:raise ValidationError(self.error_messages['password_mismatch'],code='password_mismatch',)return password2def _post_clean(self):super()._post_clean()# Валидация пароля после обновления self.instance данными формы# с помощью super().password = self.cleaned_data.get('password2')if password:try:password_validation.validate_password(password, self.instance)except ValidationError as error:self.add_error('password2', error)def save(self, commit=True):user = super().save(commit=False)user.set_password(self.cleaned_data["password1"])if commit:user.save()return user