Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 19, 2015 12:11:39

chaotism
От:
Зарегистрирован: 2010-11-29
Сообщения: 76
Репутация: +  1  -
Профиль   Отправить e-mail  

Сделать форму невалидной

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)
С аякс ответом было бы проще, просто серилизовал бы ошибки и вернул



Офлайн

#2 Июнь 19, 2015 14:12:40

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

Сделать форму невалидной

Почему не в clean это проверять, где и положено это делать?

https://docs.djangoproject.com/en/1.8/ref/forms/validation/

Офлайн

#3 Июнь 19, 2015 15:33:04

chaotism
От:
Зарегистрирован: 2010-11-29
Сообщения: 76
Репутация: +  1  -
Профиль   Отправить e-mail  

Сделать форму невалидной

Преположим форма из одного поля, типа filefield, в нем я валидирую только то, что файл таблица.
В клеан грузить 10 метровый файл, в принципе можно, конечно, но я хотел во вьюхе в отдельной функцие.
Да и суть вопрса в том, как из form.is_valid() которое True, сделать False, проверка там простая, но почему-то добавленные ошибки в шаблоне не отображаются.



Офлайн

#4 Июнь 22, 2015 15:56:41

chaotism
От:
Зарегистрирован: 2010-11-29
Сообщения: 76
Репутация: +  1  -
Профиль   Отправить e-mail  

Сделать форму невалидной

вопрос снят, решение описаные вверху подходят, проблемы была в другом куске кода



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version