2016-06-29 16 views
0

私は現在Flaskアプリを書いています。ビューの1つに非常に複雑なビジネスロジックがあるので、ビューの外で宣言されたクラスに移動しました。そのクラスのコンストラクタでは、私は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

関連する問題