Валидация пароля в django не работает

Я пытаюсь построить ванильную систему регистрации пользователей на django, используя пользовательскую форму регистрации. Я хотел бы проверять правильность пароля без перезагрузки страницы. Я испытываю трудности как с требованием соответствия паролей стандартному набору требований к паролям django, так и с проверкой соответствия двух паролей. Я хочу добиться того, чтобы поля паролей вели себя так же, как поле электронной почты. В поле электронной почты, если символ @ отсутствует, появляется всплывающее окно с сообщением о необходимости его изменения. Однако, если пароли не совпадают или содержат очень мало символов, я все равно могу отправить форму. Является ли это ожидаемым поведением или что-то идет не так? Я знаю, что могу проверить правильность формы без перезагрузки (например, используя ajax для проверки is_valid() на форме) после ее отправки, но я пытаюсь понять, нужно ли это делать?

вот моя форма

class registration_form(UserCreationForm):
    username = forms.Field(widget=forms.TextInput(attrs={'class': "form-field w-input", 'placeholder': 'Username'}))
    email = forms.Field(widget=forms.EmailInput(attrs={'class': "form-field w-input", 'placeholder': 'Email address'}))
    password1 = forms.Field(widget=forms.PasswordInput(attrs={ 'class': "form-field w-input", 'placeholder': 'Password'}))
    password2 = forms.Field(widget=forms.PasswordInput(attrs={ 'class': "form-field w-input", 'placeholder': 'Repeat Password'}))

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

Вот соответствующая часть моего шаблона

<form action="{%url 'signup' %}" method="POST">
        {% csrf_token %}

        {{ registration_form.non_field_errors }}

        {{ registration_form.source.errors }}
        {{ registration_form.source }}
        <div class="div-block-register-text">
            <div class="fieldWrapper">
                {{ registration_form.username.errors }}
                
                {{ registration_form.username}}
            </div>
            <div class="fieldWrapper">
                {{ registration_form.email.errors }}
                {{ registration_form.email}}
            </div>
            <div class="fieldWrapper">
                {{ registration_form.password1.errors }}
                {{ registration_form.password1}}
            </div>  
            <div class="fieldWrapper">
                {{ registration_form.password2.errors }}
                {{ registration_form.password2}}
                
            </div>
        </div>

вот соответствующая часть представления

class CustomLoginView(View):
    def get(self,request):
        
        context = {'registration_form': registration_form,
                   'login_form':AuthenticationForm}
        template = 'homepage/login-register.html'
        return render(request,template,context=context)
Вернуться на верх