Переопределение формы аутентификации Django по умолчанию - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь переопределить стандартное сообщение об ошибке для Django AuthorizationForm.Вместо того, чтобы сказать, что это поле обязательно для заполнения, я пытаюсь заставить его сказать, что требуется имя пользователя.

Я пытался создать подкласс AuthorizationForm со стандартным LoginView, и он не использует мой собственный метод очистки.Я посмотрел на эту похожую проблему, Изменить сообщения об ошибках django по умолчанию для AuthenticationForm и попытался следовать там советам, но все еще не может заставить его работать.Заранее благодарен за любые подсказки о том, что я могу делать неправильно.

class AuthenticationForm(AuthenticationForm):
    def __init__(self, *args, **kwargs):
        super(AuthenticationForm, self).__init__(*args, **kwargs)

    def clean(self):
        cleaned_data = super(AuthenticationForm, self).clean()
        username = cleaned_data.get('username')
        password = cleaned_data.get('password')

        if username and password:
            pass
        else:
            self.add_error('username','Username and Password required.')
            pass

Я пытаюсь заставить его показывать Имя пользователя и Требуемый пароль вместо стандартного по умолчанию. Это поле является обязательным для сообщений.Неважно, что я делаю, я не могу понять, что я забрал свой код выше.Я храню его в моем файле forms.py проекта.Я считаю, что я делаю это на подклассы неправильно.Я пробовал много разных комбинаций, но, похоже, не смог увидеть эту форму.Я использую Django 1.11

1 Ответ

0 голосов
/ 21 декабря 2018

@ Jagjeet Singh Спасибо!

Предложение Jagleet помогло мне понять, что мне нужно определить эту форму в следующем формате в моем файле forms.py, чтобы пользователь мог получить желаемый конечный результат.

class AuthenticationForm(AuthenticationForm):

    class Meta:
        model = User
        fields = '__all__'

    def __init__(self, *args, **kwargs):
        super(AuthenticationForm, self).__init__(*args, **kwargs)

        for field in self.fields.values():
            field.error_messages = {'required':'{fieldname} is required'.format(
            fieldname=field.label)}
...