Django регистрация пользователя

Помогите исправить ошибку. Изучаю django по книге Дронова, "Практика создания веб сайтов". При регистрации нового пользователя выдает ошибку.

введите сюда описание изображения

forms.py

from .models import AdvUser
from django.contrib.auth import password_validation
from django.core.exceptions import ValidationError

from .apps import user_registered


class ChangeUserInfoForm(forms.ModelForm):
    email = forms.EmailField(required=True, label='адрес электронной почты')

    class Meta:
        model = AdvUser
        fields = ('username', 'email', 'first_name', 'last_name', 'send_messages')


class RegisterUserForm(forms.ModelForm):
    email = forms.EmailField(required=True, label='адрес электронной почты')
    password1 = forms.CharField(label='пароль', widget=forms.PasswordInput, help_text=password_validation.password_validators_help_text_html())
    password2 = forms.CharField(label='пароль (повторно)', widget=forms.PasswordInput, help_text='повторите пожалуйста пароль')

    def clean_password1(self):
        password1 = self.cleaned_data['password1']
        if password1:
            password_validation.validate_password(password1)
        return password1

    def clean(self):
        super().clean()
        password1 = self.cleaned_data['password1']
        password2 = self.cleaned_data['password2']
        if password1 and password2 and password1 != password2:
            errors = {'password2': ValidationError('введенные пароли не совпадают', code='password_mismatch')}
            raise ValidationError(errors)

    def save(self, commit=True):
        user = super().save(commit=False)
        user.set_password(self.cleaned_data['password1'])
        user.is_active = False
        user.is_activated = False
        if commit:
            user.save()
        user_registered.send(RegisterUserForm, instance=user)
        return user

    class Meta:
        model = AdvUser
        fields = ('username', 'email', 'password1', 'password2', 'first_name', 'last_name', 'send_messages')

apps.py



from django.apps import AppConfig
from django.dispatch import Signal
from .utilities import send_activation_notification


class MainConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'main'
    verbose_name = 'Доска обьявлений'


def user_registered():
    return None

    user_registered = Signal(providing_args=['instance'])


def user_registered_dispatcher(sender, **kwargs):
    send_activation_notification(kwargs['instance'])

    user_registered.connect(user_registered_dispatcher)```

В django и так есть валидация паролей, так что, мне кажется, лучше просто проверять, совпадает ли первый пароль со вторым

Пример:

# Регистрация
class UserRegistrationForm(forms.ModelForm):
    password = forms.CharField(label='пароль', widget=forms.PasswordInput)
    password2 = forms.CharField(label='подтвердите пароль', widget=forms.PasswordInput)

    class Meta:
        model = User
        fields = ('username', 'first_name', 'email')

    def clean_password2(self):
        cd = self.cleaned_data
        if cd['password'] != cd['password2']:
            raise forms.ValidationError('Пароли не совпадают')
        return cd['password2']`
Вернуться на верх