Как создать форму регистрации в Django, которая распознает, когда пароль и пароль подтверждения не совпадают

Я пытаюсь создать регистрационную форму для пользователя на веб-странице, используя python и фреймворк Django. Форма работает нормально и регистрирует пользователя, если все поля действительны, и Django имеет встроенные сообщения об ошибках, если поля остаются пустыми и т.д., которые работают нормально. Однако я пытаюсь добавить свою собственную ошибку, если поля 'password' и 'confirm password' не совпадают. Если они не совпадают, я получаю ошибку: 'Представление main.views.register не вернуло объект HttpResponse. Вместо этого оно вернуло None'. Мой вопрос заключается в том, как я могу успешно вернуть страницу регистрации с ошибкой, отображаемой пользователю?

Вот мой код views.py:

def register(request):
    if request.method == "GET":
        register_form = RegisterForm()
        return render(request, "main/register.html", {
            'form': register_form
        })
    else:
        register_form = RegisterForm(request.POST)
        if register_form.is_valid():
            register_form.save()
            return render(request, "main/login.html")

Вот мой код form.py:

class RegisterForm(forms.ModelForm):
    password = forms.CharField(widget=forms.PasswordInput())
    confirm_password = forms.CharField(widget=forms.PasswordInput())
    class Meta:
        model = User
        fields = ['first_name', 'last_name', 'username', 'email', 'password']
    def clean(self):
        cleaned_data = super(RegisterForm, self).clean()
        password = cleaned_data.get("password")
        confirm_password = cleaned_data.get("confirm_password")

        if password != confirm_password:
        
            self.add_error("confirm_password", "Password does not match")

Для создания формы регистрации в Django, которая будет распознавать, когда пароль и подтверждающий пароль не совпадают:

Пожалуйста, взгляните на этот ответ от меня

Простите, эта заметка предназначена для комментариев, но моя репутация не позволяет мне разместить ее в разделе комментариев.

Вернуться на верх