2016-06-29 4 views
0

현재 Flask 앱을 ​​작성 중입니다. 뷰 중 하나에는 매우 복잡한 비즈니스 로직이 있으므로 뷰 외부에서 선언 된 클래스로 이동했습니다. 이 클래스의 생성자에서 나는 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

보기에서 호출하는 방법으로 이동하십시오. WTForm이 어떻게 설계되었는지는 데이터를 가지고있는 컨텍스트 외부의 양식을 만드는 것만은 아닙니다. – davidism