Метод run_validators
, на который вы указали, является методом для каждого поля, поэтому на самом деле не решает вашу проблему.Он объединяет несколько валидаторов для каждого поля, таких как «поле не может быть пустым», «не является адресом электронной почты» и т. Д., Чтобы вытащить первый неудачный валидатор.
Если вы хотите, чтобы сообщение показывало какую-либо ошибку,Я бы просто разобраться с этим в шаблоне.
Вы можете перефразировать ваши требования как «если форма недействительна, отобразить одно сообщение об ошибке», в противном случае, успешно войти в систему.
{% if form.errors %}
invalid email and/or password
{% endif %}
Я не вижу причины, по которой вы 'Я хотел бы изменить вашу форму для того же самого конечного эффекта, , но я полагаю, это не весело .
Если по каким-либо причинам вы хотите, чтобы в каждом поле возникали ошибки, вот решение, которое я придумала для перезаписи всех ошибок.
def clean(self):
for key, value in self._errors.iteritems():
self._errors[key] = self.error_class(['invalid email and/or password'])
return self.cleaned_data
Это также позаботится и об ошибках, не связанных с полем,как те, в том же духе.