Могут ли валидаторы электронной почты перезаписывать метод clean ()? - PullRequest
0 голосов
/ 09 июля 2019

Проблема:

Я пытаюсь написать метод clean () в моем классе форм Django и по большей части он работает (проверка пароля работает, но не по электронной почте?).Моя цель - сравнить два поля электронной почты и два поля пароля друг с другом и поднять проблему проверки, если они не совпадают.

Я пытался использовать raise forms.ValidationError(), как подробно описано в документации Django здесь., однако я бы предпочел отобразить ошибку проверки в обоих полях, поэтому вместо этого я пытаюсь использовать метод self.add_error('field', msg), как подробно описано на той же странице.

Моя попытка:

forms.py

class userRegistrationForm(forms.Form):
    # field definitions here

def clean(self):
  cleaned_data = super(userRegistrationForm, self).clean()
        email1 = cleaned_data.get('email')
        email2 = cleaned_data.get('emailConfirm')
        password1 = cleaned_data.get("password1")
        password2 = cleaned_data.get("password2")

        if password1 != password2:
            msg = 'Your Passwords do not match...'
            self.add_error('password1', msg)
            self.add_error('password2', msg)
        elif email1 != email2:
            msg = 'Your emails do not match...'
            self.add_error('email', msg)
            self.add_error('emailConfirm', msg)

Точная ошибка:

Что в итоге происходит, первое поле электронной почты проверяется без ошибок, независимо от того, что и если есть несоответствие, ошибка появляется тольково втором поле, если я не введу полный правильный адрес электронной почты, тогда это поле также возвращается к отсутствию ошибок проверки, поступающих на мой шаблонный тег ({{ form.field_id.errors }}).С другой стороны, поля пароля, которые были закодированы точно так же, просто отлично.Могут ли это быть встроенные средства проверки электронной почты?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...