升级到Flask 0.11要注意的问题

Flask已经更新至0.11版,今天我们就具体来介绍下升级到新版本需要注意的一些事。

首先,说明下这个版本的由来。Flask很早以前就已经发布了0.10版,用在生产环境也没有啥问题。0.10版本之后,开发团队原定是要发布1.0版的,不过考虑到时间间隔实在是太长,所以额外再推出一个0.11版,缩减了一些要在1.0版推出的变化,降低过渡的难度。

为了查看新版本的特性,我们先升级Flask。方法很简单,如下所示:

pip install -U flask

Flask官方文档的变更日志中,提到了一共33处变化。我这里选择性地列出几个比较重大的变化,更详细的内容请看文档。

调试

新版本中移除了Flask应用中的 debug_log_format 属性,这意味着如果没有启用调试,那么Flask会默认记录日志,日志记录格式是硬编码在框架中的。不过开发者可以通过新增的 LOGGER_HANDLER_POLICY 配置键停用默认的日志记录程序,从而使用自定义的日志记录器。

模板

除了在调试模式之外,不会再自动重载模板。可以通过新增的 TEMPLATES_AUTO_RELOADT 配置键进行配置。

render_template_string()函数改为默认自动对模板变量进行自动转义,与 render_template() 的行为更加一致。

错误处理

在Flask中,一般推荐按如下方式注册错误处理程序:

@app.errorhandler(werkzeug.exceptions.BadRequest)
def handle_bad_request(e):
    return 'bad request!'

在0.11版之前,如果在一个函数上装饰多个错误程序,那么各自的优先级是按照装饰/调用顺序处理。现在则改为按照异常的继承层级,意味着针对更加具体异常的处理程序会优先执行,而不再执行针对更普遍异常的程序。

另外,直接在应用实例上注册处理程序会报ValueError。

最重要的两个变化放到最后。

flask cli

最新的版本集成了Armin自己开发的 click 库,提供了 flask 命令行命令和 flask.cli模块,用于开启本地调试服务器。相对于过去使用 flask.run()方法,使用 flask 命令更快更可靠,而且可以替代 Flask-Script 第三方扩展。

模块导入

新版中弃用了以 flask.ext 形式导入扩展模块,应该改用 flask_foo。

如果你仍使用原来的形式,Flask 会对每个这样导入的扩展报 flask.exthook.ExtDeprecationWarning 警示。为了便利开发者,Flask团队提供了一个叫做 flask-ext-migrate 的迁移工具,可以自动改写导入语句。

举例来看具体变化:

from flask.ext import foo => import flask_foo as foo
from flask.ext.foo import bam => from flask_foo import bam
import flask.ext.foo => import flask_foo

 

 

转载于:https://my.oschina.net/yehun/blog/870926

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值