Flask-Script manager.command에서 현재 앱 인스턴스에 액세스하려고합니다.Flask-Script 현재 앱을 가져 오는 방법은 무엇입니까?
이 오류 출력 (url_map이 flask.app의 한 속성입니다)
@manager.command
def my_function():
x = app.url_map # this fails, because app is a callable
print "hi"
이 작동하지만 앱 옆에 괄호를 추가 할 필요 좋아하지 않는다.
@manager.command
def my_function():
x = app().url_map
print "hi"
디버거는 app이 호출 가능함을 보여줍니다. 그건 내가 앱 인스턴스를 만드는 방식과 관련이있다.
응용 프로그램 - 플라스크 인스턴스, 또는 호출 플라스 크 인스턴스를 반환 :
docs from flask-scriptdef create_app(settings=None, app_name=None, blueprints=None): ...lots of stuff... app = flask.Flask(app_name) ...lots of stuff... return app def create_manager(app): manager = Manager(app) @manager.command def my_function(): x = app.url_map print "hi" def main(): manager = create_manager(create_app) manager.run() if __name__ == "__main__": main()
는
Manager(app)
에 응용 프로그램 매개 변수에 대해 말할 :이 패턴을 다음과 같은거야.
문서에 문제가 없으므로 전화를 걸면 편안합니다. :-) 게다가 나는 다른 사람들이 그렇게하는 것을 보았다.
하지만 이제는 주변 장치 명령을 추가하고 싶습니다. 앱을 괄호로 사용하게되면 잘못된 냄새가납니다. 내가 도대체 뭘 잘못하고있는 겁니까?
편집 : 몇 가지 실험을했습니다. 이것은 틀 렸습니다. 괄호를 추가하면 앱 인스턴스가 두 번째로 다시 만들어집니다.