Flask 使用工厂模式访问烧瓶中的@App decorator
如何使用装饰器的工厂模式访问应用程序对象? 我知道当前的_应用程序存在,但我不能将其用于装饰 在使用工厂模式之前(例如,在函数中包装应用程序初始化和蓝图注册),我可以做如下操作:Flask 使用工厂模式访问烧瓶中的@App decorator,flask,factory-pattern,Flask,Factory Pattern,如何使用装饰器的工厂模式访问应用程序对象? 我知道当前的_应用程序存在,但我不能将其用于装饰 在使用工厂模式之前(例如,在函数中包装应用程序初始化和蓝图注册),我可以做如下操作: @app.errorhandler(500) @app.errorhandler(502) def generic_errror_handler(error): # Some logic here return render_template('error.html', error=errror) 但
@app.errorhandler(500)
@app.errorhandler(502)
def generic_errror_handler(error):
# Some logic here
return render_template('error.html', error=errror)
但是在使用工厂模式之后,我不知道如何以一种好的方式实现这一点。是否在create_app()函数中初始化它们
def create_app():
app = Flask(__name__)
initialize_extensions(app)
register_blueprints(app)
return app
您可以在create_应用程序定义中初始化处理程序,例如
def create_app():
app = Flask(__name__)
initialize_extensions(app)
register_blueprints(app)
@app.errorhandler(500)
@app.errorhandler(502)
def generic_errror_handler(error):
# Some logic here
return render_template('error.html', error=errror)
return app
或者,创建一个单独的Python文件,比如error_handlers.py(示例取自):
并从create\u app
中调用register\u handlers
:
def create_app():
app = Flask(__name__)
initialize_extensions(app)
register_blueprints(app)
register_handlers(app)
return app
您也可以在模块上定义函数而不使用decorator,只需在创建应用程序后对其进行修饰即可。e、 g.
应用程序错误文件夹(404)(未找到页面)
等。
def create_app():
app = Flask(__name__)
initialize_extensions(app)
register_blueprints(app)
register_handlers(app)
return app