我们正在将 Flask 应用程序从基于函数的视图迁移到可插入视图,除了错误处理程序之外,一切都按预期工作。我试图将所有错误处理程序放入一个名为 error_handlers.py 的模块中,并将其导入到主模块中。但它不起作用。
尝试在 Google 中搜索并按照相同的方式找到一些 Git 存储库,但它对我不起作用,请帮助我解决这个问题。
app
|
|__ __init__.py
|__ routing.py (which has the app=Flask(__name__) and imported error handlers here [import error_handlers])
|__ views.py
|__ error_handlers.py (Ex: @app.errorhandler(FormDataException)def form_error(error):return jsonify({'error': error.get_message()})
|__ API (api modules)
|
|
|__ __init__.py
|__ user.py
我正在使用 Python 2.6 和 Flask 0.10.1。
虽然你可以使用一些来做到这一点循环进口 http://en.wikipedia.org/wiki/Circular_dependency, e.g.:
app.py
import flask
app = flask.Flask(__name__)
import error_handlers
错误处理程序.py
from app import app
@app.errorhandler(404)
def handle404(e):
return '404 handled'
显然,在更复杂的场景中这可能会变得棘手。
Flask 有一种干净灵活的方式来从多个模块组成应用程序,这是一个概念蓝图 http://flask.pocoo.org/docs/blueprints/。使用以下方法注册错误处理程序flask.Blueprint http://flask.pocoo.org/docs/api/#blueprint-objects您可以使用以下任一方法:
flask.Blueprint.errorhandler http://flask.pocoo.org/docs/api/#flask.Blueprint.errorhandler处理本地蓝图错误的装饰器
flask.Blueprint.app_errorhandler http://flask.pocoo.org/docs/api/#flask.Blueprint.app_errorhandler处理全局应用程序错误的装饰器。
Example:
错误处理程序.py
import flask
blueprint = flask.Blueprint('error_handlers', __name__)
@blueprint.app_errorhandler(404)
def handle404(e):
return '404 handled'
app.py
import flask
import error_handlers
app = flask.Flask(__name__)
app.register_blueprint(error_handlers.blueprint)
两种方法效果相同,取决于哪种更适合您。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)