Pocoo 发布 Flask 0.10 和 Werkzeug 新版本

  • 水羽哲

2013 年 6 月 15 日

话题:Web框架Python语言 & 开发

在经过了漫长的沉寂之后,Pocoo 团队于 6 月 13 日发布了 Flask 和 Werkzeug 的最新版本,这次更新最大的变化是提供 Python 3(3.3 以及更高版本)的支持。

由于 Werkzeug 之前版本的实现没有满足PEP 3333的文档描述,所以他们不得不打破部分向后兼容的特性。Armin提醒开发者,如果项目代码中使用了 werkzeug.urls 模块、Headers 和 EnvironHeaders 数据结构,需要在更新之前及时作出修复。

这次升级值得注意的变化是:

Werkzeug:

  1. HTTP 异常类有了小的调整,可以携带有效载荷并在流中挂起异常,增加了可用性;
  2. URL 模块增加了一系列对于IRI的支持;
  3. 增加了一系列方法桥接PEP 333与 PEP 3333、Python 2.x 和 3.x 下 WSGI 的差异;
  4. 内部表单解析升级,可以在任何情况下获取流数据;
  5. 引入get_data方法为今后替换 requests 和 response 中的.data 描述符做准备。

Flask:

  1. 增加了json模块以统一 Python 2.x 和 3.x 的环境下 JSON 的支持,并且提供了一系列扩展;
  2. 可以仅在 application context 中渲染模版,flask.g 也绑定到 application context 中;这些变化虽然微小,但是可以简化 Web 环境外与 Flask 的交互,例如可以更加简单的维护没有绑定到 HTTP 请求生命周期上的数据库链接。
  3. Flask 的内部错误处理得到改进;
  4. 在请求中引入get_json函数适配 Werkzeug 的 get_data 函数;
  5. 为 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 下项目的迁移,还需要阅读这个文档

Web框架Python语言 & 开发