文档章节

升级到Flask 0.11要注意的问题

yehun
 yehun
发布于 2017/03/30 17:15
字数 720
阅读 63
收藏 0

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

 

 

© 著作权归作者所有

yehun
粉丝 8
博文 218
码字总数 137315
作品 0
长宁
高级程序员
私信 提问
Flask 0.11 发布, Python 开发的 Web 框架

Flask 0.11 发布了,Flask 是一个微型的 Python 开发的 Web 框架,示例代码: 改进记录如下: Added support to serializing top-level arrays to . This introduces a security risk in an......

messense
2016/05/29
2.5K
8
Android Studio 0.6.0 发布

Android Studio 0.6.0 发布,该版本没有什么可见的新特性。主要是为了支持 Android Gradle 插件的 0.11 版本,同时包含一些在与 IntelliJ 13.x 版本集成的 bug。 注意:该版本要求 Android ...

oschina
2014/06/07
3.5K
10
Flask-SocketIO 简单使用指南

Flask-SocketIO 使 Flask 应用程序能够访问客户端和服务器之间的低延迟双向通信。客户端应用程序可以使用 Javascript,C ++,Java 和 Swift 中的任何 SocketIO 官方客户端库或任何兼容的客户...

yongxinz
2018/11/01
0
0
在flask中使用flask-migrate管理数据库

Flask-Migrate是一个为Flask应用处理SQLAlchemy数据库迁移的扩展,使得可以通过Flask的命令行接口或者Flask-Scripts对数据库进行操作。 安装 pip3 install Flask-Migrate 例子:test.py 上述代...

小家雀
2018/12/06
74
0
解决sqlalchemy线程安全问题

sqlalchemy是一个非常强大的python orm库,功能完善,BUG少,版本发布频繁,缺点就是代码的可读性略差,我估计过不了pep8、pylint的检查 ORM的好处 帮忙解决sql注入的问题 将操作SQL语句变成...

Jun_Wong
2017/10/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

golang-字符串-地址分析

demo package mainimport "fmt"func main() {str := "map.baidu.com"fmt.Println(&str, str)str = str[0:5]fmt.Println(&str, str)str = "abc"fmt.Println(&s......

李琼涛
56分钟前
4
0
Spring Boot WebFlux 增删改查完整实战 demo

03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里...

泥瓦匠BYSocket
今天
6
0
从0开始学FreeRTOS-(列表与列表项)-3

FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数...

杰杰1号
今天
4
0
Java反射

Java 反射 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的 Class,Class 类 用于表示.class 文件(字节码)) 一、反射的概述 定义:JAVA 反射机制是在运行状态中,对于任...

zzz1122334
今天
5
0
聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部