1. macpages.livejournal.com

    27.07.2010

    0 ↑
    0 ↓
    Всем привет!

    С удовольствием использую стандартные messages для уведомления пользователей. Хотел бы использовать их и при валидации формы - сообщать о некорректно заполненных полях. Однако, появляется ожидаемая ошибка MessageFailure (Without the django.contrib.messages middleware, messages can only be added to authenticated users.). Не знаю как ее обойти. Вот код формы:
    class my_form(forms.ModelForm):
    def clean_field(self):
    field = self.cleaned_data.get("field")
    if len(field) != 11:
    messages.error(request, "Длина field должна составлять 11 цифр")
    class Meta:
    model = MyModel
    exclude = ['insert_date', 'user']

    Во всех примерах предлагается использовать raise form.ValidationError, но я в питоне новичок и не пойму как его скрестить с messages, ведь form.is_valid() у меня выводит в случае ошибки messages, а как тогда еще и ValidationError показать пользователю?

    Спасибо!
  2. django.contrib.messages middleware
    это миддлеваре включено?
  3. Иван Сагалаев

    27.07.2010

    1 ↑
    0 ↓

    Хотел бы использовать их и при валидации формы - сообщать о некорректно заполненных полях.

    Боже мой, зачем? Чем вас не устраивают сообщения об ошибках самой формы?

  4. macpages.livejournal.com

    27.07.2010

    0 ↑
    0 ↓
    django.contrib.messages middleware
    это миддлеваре включено?
    Да, включено.
    Боже мой, зачем? Чем вас не устраивают сообщения об ошибках самой формы?
    Мессаджи мне удобны. А теперь приходиться городить и messages для уведомления об "успешном сохранении" и ValidationError для указания на ошибки. Я понимаю, что возможно в корне не прав по части обработке форм и нужно работать только с ValidationError. Наставьте на путь истинный.
  5. Alexander Koval

    27.07.2010

    0 ↑
    0 ↓
    Я понимаю, что возможно в корне не прав по части обработке форм и нужно работать только с ValidationError. Наставьте на путь истинный.
    Так оно и есть.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.