在经过了漫长的沉寂之后, Pocoo 团队于 6 月 13 日发布了 Flask 和 Werkzeug 的最新版本,这次更新最大的变化是提供Python 3(3.3 以及更高版本)的支持。
由于Werkzeug 之前版本的实现没有满足 PEP 3333 的文档描述,所以他们不得不打破部分向后兼容的特性。 Armin 提醒开发者,如果项目代码中使用了 werkzeug.urls 模块、Headers 和 EnvironHeaders 数据结构,需要在更新之前及时作出修复。
这次升级值得注意的变化是:
Werkzeug:
- HTTP 异常类有了小的调整,可以携带有效载荷并在流中挂起异常,增加了可用性;
- URL 模块增加了一系列对于 IRI 的支持;
- 增加了一系列方法桥接 PEP 333 与 PEP 3333、Python 2.x 和 3.x 下 WSGI 的差异;
- 内部表单解析升级,可以在任何情况下获取流数据;
- 引入
get_data
方法为今后替换 requests 和 response 中的.data 描述符做准备。Flask:
- 增加了
json
模块以统一 Python 2.x 和 3.x 的环境下 JSON 的支持,并且提供了一系列扩展;- 可以仅在 application context 中渲染模版,flask.g 也绑定到 application context 中;这些变化虽然微小,但是可以简化 Web 环境外与 Flask 的交互,例如可以更加简单的维护没有绑定到 HTTP 请求生命周期上的数据库链接。
- Flask 的内部错误处理得到改进;
- 在请求中引入
get_json
函数适配 Werkzeug 的 get_data 函数;- 为 JSON 的序列化增加配置项;
对于这次更新,YCombinator 上围绕“Flask 的可用性”、“代码质量”和“现有代码向 Python 3 迁移”等进行了讨论:
Flask 的代码质量:
bjourne:Flask 是用 Python 写的最漂亮的代码。查看一下别的 Python 框架,它们也许有几十个 API,但是内部实现是一团乱麻。读 Flask 的代码是一种享受。……任何想提高自己技艺的 Python 程序员都需要学习 Flask。
Flask 的可用性:
Timothee:Twillio 使用它支撑他们的 API, Flask-RESTful 就是他们为了满足这个需求而开发的。
dkh:Disqus 在使用它;
代码迁移:
有人问道:我们想把 PHP 的网店转移到 Python 上,既然现在 Flask 支持 3.x 了,现在是否可以立即迁移到 3.x 的环境? 对此,corford 回答道:“ 问题的关键在于 Flask 的扩展和文档,而不是 Flask 本身。如果你的应用大部分代码都是自己写的,那么迁移到 Python 3 是没有问题的,但是如果你大量使用了别人的扩展,就需要等到他们移植到 3.x 环境。”
Armin 表示,以后将会更加频繁的更新,而不是像这次这样好久才推出一个新的版本。如果要升级 Flask 框架,可以参考升级文档,对于 Python 3.x 下项目的迁移,还需要阅读这个文档。
评论