2016-06-29 2 views
0

В настоящее время я пишу флеш-приложение. Один из моих взглядов имеет очень сложную бизнес-логику, поэтому я переместил ее в класс, объявленный вне представления. В конструкторе этого класса я создаю несколько экземпляров объектов flask_wtf.form.Form.Как создать экземпляр формы вне представления?

Моя проблема заключается в том, что во время выполнения я получаю следующее сообщение об ошибке:

*** RuntimeError: Working outside of application context. 

This typically means that you attempted to use functionality that needed 
to interface with the current application object in a way. To solve 
this set up an application context with app.app_context(). See the 
documentation for more information. 

(ipdb это мое)

Я предполагаю, что объекты формы должны быть в представлении? Но я хочу переместить работу по созданию их в отдельный класс, чтобы представление не стало слишком сложным, иначе оно неуправляемо.

ответ

2

Вы не можете. flask_wtf.Form требует контекста приложения для настройки CSRF.

На самом деле не имеет смысла создавать экземпляр формы вне того места, где он будет использоваться, потому что вам необходимо создать экземпляр этого файла с данными, которые представлены, чтобы сделать что-нибудь полезное.

Переместить создание экземпляров формы в метод, который вы вызываете в этом классе, а не в методе __init__.

+0

Мне это нравится. У меня очень сложная логика для создания экземпляров форм, и теперь мне нужно переместить все это в представление. – ruipacheco

+1

Переместите его в метод, который вы вызываете из представления. Создание формы вне контекста, где у вас есть данные для него, не так, как WTForms. – davidism

Смежные вопросы