Форум сайта python.su
Django 1.8
Случилась такая задача как во view после того как форма с файлом валидировась сделать из нее выгрузку данных и если возникнет ошибка, маякнуть об это пользователю, происходит это уже в блоке.
Сокращенно получается так, если в самой форме ошибки, то на странице ошибки отображатся,
если форма валидацию прошла, то на странице ничего не отображается, хотя в логере пишет -
logger.debug(form.is_valid()) - false
logger.debug(form.errors) - переданные ошибки
logger.debug(form.as_p()) - верстку с отмеченными ошибками
def form_invalid(self, form): # #raise Exception(form.is_valid()) # # raise Exception(form.errors) logger.debug(form.is_valid()) logger.debug(form.errors) logger.debug(form.as_p()) #form.errors.__all__ = ErrorList('карамба') #form.errors["__all__"] = ErrorList('карамба') return self.render_to_response(self.get_context_data(form=form)) def form_valid(self, form): try: instance = self.import_data(form) except Exception, err: form.add_error('__all__', ErrorList(errors)) #TODO: понять как пачкать форму form.add_error('file', "Some message") form.is_valid = False form._errors.__file__ = ErrorList(errors) form._errors['__file__'] = ErrorList(errors) form.errors.file = ErrorList(errors) form.errors['file'] = ErrorList(errors) return super(ImportMailingView, self).form_invalid(form) return super(ImportMailingView, self).form_valid(form)
Офлайн
Почему не в clean это проверять, где и положено это делать?
https://docs.djangoproject.com/en/1.8/ref/forms/validation/
Офлайн
Преположим форма из одного поля, типа filefield, в нем я валидирую только то, что файл таблица.
В клеан грузить 10 метровый файл, в принципе можно, конечно, но я хотел во вьюхе в отдельной функцие.
Да и суть вопрса в том, как из form.is_valid() которое True, сделать False, проверка там простая, но почему-то добавленные ошибки в шаблоне не отображаются.
Офлайн
вопрос снят, решение описаные вверху подходят, проблемы была в другом куске кода
Офлайн