Вы возвращаете строку электронной почты из метода clean, если не найдено совпадений. Но основной метод clean
должен возвращать весь текст cleaned_data, а не отдельное поле.
В любом случае, эта часть логики проверки должна идти в конкретном методе clean_email
, который делает необходимым для возврата строки электронной почты. Таким образом, вы должны иметь:
def clean_email(self):
email = self.cleaned_data.get('email')
try:
match = signup.objects.get(email=email)
print(match)
except signup.DoesNotExist:
# Unable to find a user, this is fine
return email
# A user was found with this as a username, raise an error.
raise forms.ValidationError('This email address is already in use.')
def clean(self):
cleaned_data = super(signupForm, self).clean()
password = cleaned_data.get("password")
confirm_password = cleaned_data.get("confirm_password")
if password != confirm_password:
raise forms.ValidationError(
"password and confirm_password does not match"
)
return cleaned_data
(И обратите внимание, этот вопрос не имеет ничего общего, но ваша форма входа не должна быть ModelForm; это приведет к другим проблемам с проверкой.)