Я использую Django rest-auth, чтобы иметь конечные точки для моей регистрации, смены пароля и т. Д. Я работаю с конечной точкой смены пароля, которая содержит старый пароль, новый пароль и подтверждение пароля. Я пытаюсь переопределить что-то в оригинальном сериализаторе, например, добавить свои собственные сообщения об ошибках, если поле, например, неверно. Тем не менее, одно сообщение об ошибке, с которым я сталкиваюсь с трудностями, - это если поля пустые. По умолчанию сообщение об ошибке появляется так каждый раз:
{
"old_password": [
"This field may not be blank."
],
"new_password1": [
"This field may not be blank."
],
"new_password2": [
"This field may not be blank."
]
}
Я хотел бы реализовать свое собственное сообщение об ошибке, если поле пустое, однако я не могу этого сделать. Вот сериализатор, который я создал:
class PasswordChange(PasswordChangeSerializer):
set_password_form_class = SetPasswordForm
def validate_old_password(self, value):
invalid_password_conditions = (
self.old_password_field_enabled,
self.user,
not self.user.check_password(value)
)
if all(invalid_password_conditions):
raise serializers.ValidationError('The password you entered is invalid.')
return value
а вот класс формы:
class PasswordForm(ChangePasswordForm):
oldpassword = PasswordField(label=_("Current Password"))
password1 = SetPasswordField(label=_("New Password"))
password2 = PasswordField(label=_("Confirm New Password"))
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['oldpassword'].widget = forms.PasswordInput(attrs={"placeholder": ""})
self.fields['password1'].widget = forms.PasswordInput(attrs={"placeholder": ""})
self.fields['password2'].widget = forms.PasswordInput(attrs={"placeholder": ""})
def clean_oldpassword(self):
if not self.user.check_password(self.cleaned_data.get("oldpassword")):
raise forms.ValidationError(_("The password you entered is invalid."))
Я делаю это правильно? Как я могу изменить сообщение об ошибке, которое отображается, когда поля не заполнены?