Flask Changelog ¶
在这里,您可以看到每个Flask发行版之间的更改的完整列表。
版本0.12 ¶
- cli命令现在响应-version。
- 根据问题
#104
,已删除send_file
中文件类对象的Mimetype猜测和ETag生成。请参阅拉请求#1849
。 - 在
send_file
中的Mimetype猜测现在大声失败,不会回退到application/octet-stream
。请参阅拉请求#1988
。 - 使
flask.safe_join
能够加入多个路径,例如os.path.join
(拉请求#1730
)。 - 还原导致开发服务器崩溃的行为更改,而不是返回内部服务器错误(拉取请求
#2006
)。 - 正确调用常规请求分派和错误处理程序的响应处理程序。
- 默认情况下禁用应用程序记录器的记录器传播。
- 在
send_file
中添加对范围请求的支持。 app.test_client
包含预设的默认环境,现在可以直接设置,而不是按client.get
。
版本0.11 ¶
发布日期为2016年5月29日,代号为Absinthe。
- 增加了将顶层数组序列化为
flask.jsonify()
的支持。这在古老的浏览器中引入了安全风险。有关详细信息,请参阅JSON Security。 - 添加before_render_template信号。
- 向
flask.Test.test_client()
中添加** kwargs以支持将其他关键字参数传递到flask.Flask.test_client_class
的构造函数。 - 添加了控制set-cookie行为的
SESSION_REFRESH_EACH_REQUEST
配置键。如果设置为True
,永久会话将刷新每个请求并获得其生存期延长,如果设置为False
,则只有会话实际修改时才会修改。非永久会话不受此影响,如果浏览器窗口关闭,将永远失效。 - Made Flask支持传入数据的自定义JSON MIME类型。
- 从视图函数中添加对
(响应, 头)
形式的返回元组的支持。 - 添加了
flask.Config.from_json()
。 - 添加了
flask.Flask.config_class
。 - 添加了
flask.Config.get_namespace()
。 - 在调试模式之外,模板不再自动重新加载。这可以使用新的
TEMPLATES_AUTO_RELOAD
配置键配置。 - 添加了在Python 3.3的命名空间加载器中的限制的解决方法。
- 在使用Python 3.3的命名空间包时添加了对显式根路径的支持。
- 添加了flask和
flask.cli
模块,通过点击CLI系统启动本地调试服务器。这建议在旧的flask.run()
方法,因为它的工作更快,更可靠,由于不同的设计,也替代了Flask-Script
。 - 现在首先检查与特定类匹配的错误处理程序,从而允许捕获作为HTTP异常的子类的异常(在
werkzeug.exceptions
中)。这使得扩展作者可以创建异常,默认情况下会导致他们选择的HTTP错误,但是如果需要可以使用自定义错误处理程序捕获异常。 - 添加了
flask.Config.from_mapping()
。 - 即使禁用调试,Flask也将默认进行日志记录。日志格式现在已硬编码,但可以通过
LOGGER_HANDLER_POLICY
配置键禁用默认日志处理。 - 删除了已弃用的模块功能。
- 添加了
EXPLAIN_TEMPLATE_LOADING
配置标志,该标志在启用时将指示Flask解释如何定位模板。这将帮助用户在加载错误的模板时进行调试。 - 按照注册模板加载的顺序强制执行蓝图处理。
- 移植测试套件到py.test。
- 已弃用
request.json
以支持request.get_json()
。 - 在jsonify()方法中添加“漂亮”和“压缩”分隔符定义。当JSONIFY_PRETTYPRINT_REGULAR = False时,通过删除分隔符后默认情况下包括的不必要的空白空间来减少JSON响应大小。
- JSON响应现在以换行符结束,因为它是一个惯例,UNIX文本文件以换行符结束,并且当此换行符丢失时,某些客户端无法正常处理。请参阅https://github.com/pallets/flask/pull/1262 - 最初是作为https://github.com/kennethreitz/httpbin/issues/168的一部分出现的
- 如果用户使用小写版本
options
(发出#1288
)注册覆盖规则,则自动提供的OPTIONS
方法已正确禁用。 flask.json.jsonify
现在支持datetime.date
类型(pull请求#1326
)。- 不要泄漏已经捕获的异常的异常信息到上下文拆卸处理程序(拉请求
#1393
)。 - 允许自定义Jinja环境子类(拉请求
#1422
)。 flask.g
现在有pop()
和setdefault
方法。- 默认情况下打开
flask.templating.render_template_string
的自动转义(拉请求#1515
)。 flask.ext
现已弃用(请求请求#1484
)。send_from_directory
现在在服务器操作系统上的文件名无效时提出BadRequest(拉请求#1763
)。- 添加了
JSONIFY_MIMETYPE
配置变量(pull请求#1728
)。 - 拆卸处理期间的异常将不再留下错误的应用程序上下文。
版本0.10.2 ¶
(bugfix发布,发布日期待公布)
- 修复了破坏的test_appcontext_signals()测试用例。
- 在
flask.helpers.find_package()
中提高AttributeError
,解释为什么在使用PEP 302导入钩子而不使用is_package() 方法。 - 修复了在输入要传递给拆卸处理程序的请求或应用程序上下文之前引发异常的问题。
- 修正了当请求绝对URL时,测试客户端中的请求中的查询参数被删除的问题。
- 将@before_first_request置入装饰器中。
- 修复了发送带有名称的文件流时的错误。
- 固定send_from_directory未正确扩展到应用程序根路径。
- 更改前的逻辑先请求处理程序在调用后翻转标志。这将允许一些潜在危险的应用,但应该允许。
- 修复了来自app.url_build_error_handlers的处理程序重新处理BuildError的Python 3错误。
版本0.10.1 ¶
(bugfix版本,于2013年6月14日发布)
- 修复了
|tojson
没有引用单引号,导致过滤器在HTML属性中无法正常工作的问题。现在可以在单引号属性中使用该过滤器。这应该使使用angular.js过滤器更容易。 - 增加了对字节字符串回到会话系统的支持。这破坏了与人们将二进制数据用于令牌验证进入会话的常见情况的兼容性。
- 修复了为同一个端点注册相同的方法两次会不正确地触发异常的问题。
版本0.10 ¶
发行于2013年6月13日,代号为Limoncello。
- 将缺省cookie序列化格式从pickle更改为JSON,以限制攻击者在密钥泄漏时可以执行的操作。有关详细信息,请参阅Version 0.10。
- 除了已经存在的
template_filter
方法系列之外,还添加了template_test
方法。 - 除了已经存在的
template_filter
方法系列之外,还添加了template_global
方法。 - 设置x-sendfile的content-length头。
tojson
过滤器现在不会转义HTML5解析器中的脚本块。- 在默认情况下,模板中使用的
tojson
现在是安全的。这是允许由于不同的逃脱行为。 - 如果您尝试在已经使用的端点上注册新函数,Flask现在将引发错误。
- 在simplejson周围添加了包装器模块,并添加了datetime对象的默认序列化。这允许更容易地定制如何处理Flask或任何Flask扩展JSON。
- 删除了已弃用的内部
flask.session
模块别名。使用flask.sessions
来获取会话模块。这不应与flask.session
会话代理混淆。 - 现在可以在没有请求上下文的情况下呈现模板。该行为稍有不同,因为
request
,session
和g
对象将不可用,并且不调用blueprint的上下文处理器。 - config对象现在可以作为一个真正的全局模板,而不是通过上下文处理器,使其在导入模板默认情况下可用。
- 添加了一个选项来生成非ASCII编码JSON,这将导致通过网络传输更少的字节。默认情况下禁用它,以免与现有库(预期可能希望
flask.json.dumps
返回bytestrings)混淆。 flask.g
现在存储在应用上下文而不是请求上下文中。flask.g
现在获得了一个get()
方法,用于不会在非现有项目上出错。flask.g
现在可以与in
运算符一起使用以查看定义的内容,它现在是可迭代的,并将生成所有存储的属性。flask.Flask.request_globals_class
已重命名为flask.Flask.app_ctx_globals_class
这是一个更好的名称,因为它从0.10。- 请求,会话和g现在也作为代理添加到模板上下文中,使其在导入的模板中可用。一个人必须非常小心这些,虽然因为在宏以外的使用可能会导致缓存。
- 如果传递代理异常,Flask将不再调用错误的错误处理程序。
- 添加了chrome的Cookie在localhost中的解决方法不能正常工作与域名。
- 更改了从会话中选择Cookie值的默认值,以便更好地使用Google Chrome浏览器的逻辑。
- 添加了message_flashed信号,简化了闪烁测试。
- 添加了对复制请求上下文以更好地使用greenlets的支持。
- 删除自定义JSON HTTP异常子类。如果你依靠他们,你可以重新引入他们自己简单。但是,强烈建议不要使用它们,因为接口有缺陷。
- Python需求改变了:现在需要Python 2.6或2.7来准备Python 3.3端口。
- 更改了拆卸系统如何通知异常。如果在错误处理过程中半途处理异常,这现在更可靠。
- 在调试模式下请求上下文保存现在保留异常信息,这意味着拆卸处理程序能够区分错误和成功的情况。
- 添加了
JSONIFY_PRETTYPRINT_REGULAR
配置变量。 - Flask现在默认命令JSON键,不会由于不同工作者之间不同的哈希种子而垃圾HTTP缓存。
- 添加了appcontext_pushed和appcontext_popped信号。
- 内建运行方法现在在选择要运行的默认端口时考虑
SERVER_NAME
。 - 添加flask.request.get_json()作为替换旧的flask.request.json属性。
版本0.9 ¶
发布日期:2012年7月1日,代码Campari。
- 默认情况下,
flask.Request.on_json_loading_failed()
返回JSON格式的响应。 flask.url_for()
函数现在可以生成锚点到生成的链接。flask.url_for()
函数现在还可以显式生成特定于给定HTTP方法的URL规则。- 如果未明确设置,Logger现在仅返回调试日志设置。
- 在关闭请求时,取消注册WSGI环境与请求对象之间的循环依赖关系。这意味着在响应返回到WSGI服务器之后,environ
werkzeug.request
将是None
,但是有一个优点,CPython上不需要垃圾收集器来拆除请求,除非用户自己创建循环依赖项。 - 会话现在存储回调后,所以如果会话有效负载存储在会话中,您仍然可以在后请求回调中修改它。
flask.Flask
类将避免导入提供的导入名称(如果可以)(所需的第一个参数),以便以编程方式获得构建Flask实例的工具。Flask类将会回退到在具有自定义模块钩子的系统上使用import。 Google App Engine,或者当导入名称位于Python 2.7之前的zip存档(通常为.egg)中时。- 蓝图现在有一个装饰器来添加应用广泛的自定义模板过滤器
flask.Blueprint.app_template_filter()
。 - Flask和Blueprint类现在有一个非装饰器方法,用于添加应用广泛的
flask.Flask.add_template_filter()
和flask.Blueprint.add_app_template_filter()
的自定义模板过滤器。 flask.get_flashed_messages()
函数现在允许通过category_filter
参数在单独的块中渲染闪烁的消息类别。flask.Flask.run()
方法现在接受主机和端口参数的None
None
。这允许使用配置值调用运行,例如app.run(app.config.get('MYHOST'), app.config.get('MYPORT'))
行为无论是否提供配置文件。flask.render_template()
方法现在接受模板名称的可迭代或单个模板名称。以前,它只接受一个模板名称。在迭代器上,找到的第一个模板被渲染。- 添加了
flask.Flask.app_context()
,它与请求上下文非常相似,但只提供对当前应用程序的访问。这还增加了对没有活动请求上下文的URL生成的支持。 - View函数现在可以返回一个元组,其中第一个实例是
flask.Response
的实例。这允许从视图函数返回jsonify(error =“error msg”), 400
Flask
和Blueprint
现在为子类提供get_send_file_max_age()
钩子,以覆盖使用flask.Flask.send_static_file()
(用于默认静态文件处理程序)和send_file()
。这个钩子提供了文件名,例如允许通过文件扩展来改变高速缓存控制。send_file和静态文件的默认最大值可以通过新的SEND_FILE_MAX_AGE_DEFAULT
配置变量配置,该变量用于默认的get_send_file_max_age实现中。- 修正了会话实现中的一个假设,这可能会破坏使用外部存储的会话实现上的消息闪烁。
- 更改函数中元组返回值的行为。它们不再是响应对象的参数,它们现在具有定义的含义。
- 添加
flask.Flask.request_globals_class
以允许在创建每个请求的g
实例时使用特定类。 - 添加了required_methods属性以查看注册时强制添加方法的函数。
- 添加了
flask.after_this_request()
。 - 添加了
flask.stream_with_context()
并且能够多次推送上下文,而不会产生意外行为。
版本0.8 ¶
发布日期:2011年9月29日,代号Rakija
- 将重构的会话支持转换为会话接口,以便可以更改会话的实现,而不必覆盖Flask类。
- 空会话Cookie现在会自动正确删除。
- 查看功能现在可以选择停止获得自动OPTIONS实现。
- HTTP异常和错误请求错误现在可以被捕获,以便它们在traceback中正常显示。
- Flask在调试模式下现在检测到一些常见的问题,并尝试警告他们。
- 如果在处理第一个请求后附加了视图,则调试模式下的Flask现在将报告断言错误。当用户忘记提前导入视图代码时,这会提供早期反馈。
- 添加了注册只在第一个请求开始时触发一次的回调的功能。(
Flask.before_first_request()
) - 格式错误的JSON数据现在将触发错误的请求HTTP异常,而不是值错误,如果未处理,通常会导致500个内部服务器错误。这是一个向后不兼容的更改。
- 应用程序现在不仅具有资源和模块所在的根路径,而且还是作为在运行时修改的文件的指定位置(上传等)的实例路径。此外,这在概念上只有实例依赖和外部版本控制,因此它是放置配置文件等的完美的地方。有关详细信息,请参阅Instance Folders。
- 添加了
APPLICATION_ROOT
配置变量。 - 实施
session_transaction()
可轻松修改测试环境中的会话。 - 重构的测试客户端。
APPLICATION_ROOT
配置变量以及SERVER_NAME
现在被测试客户端正确地用作默认值。 - 添加了
flask.views.View.decorators
以支持更简单的可插入(基于类)视图的装饰。 - 修正了一个问题,其中测试客户端如果与“with”语句一起使用没有触发拆卸处理程序的执行。
- 添加对会话cookie参数的更精细控制。
- 如果没有实现处理程序,HEAD对方法视图的请求现在会自动分派到get方法。
- 实施虚拟
flask.ext
包以从中导入扩展。 - 对异常的上下文保护现在是Flask本身的一个组成部分,不再是测试客户端。这清除了一些内部逻辑,并降低了单元测试中失控请求上下文的几率。
版本0.7 ¶
发布于2011年6月28日,代号为Grappa
- 添加了
make_default_options_response()
,可以被子类用来更改OPTIONS
响应的默认行为。 - 未绑定的本地现在会生成一个正确的
RuntimeError
,而不是AttributeError
。 - 基于文件对象的Mimetype猜测和etag支持现在已不适用于
flask.send_file()
,因为它不可靠。通过文件名或附加自己的etag,并提供一个适当的mimetype的手。 - 模块的静态文件处理现在需要明确提供静态文件夹的名称。之前的自动检测不可靠,并且导致Google App Engine出现问题。直到1.0,旧的行为将继续工作,但问题依赖性警告。
- 修复了Flask在jython上运行的问题。
- added a
PROPAGATE_EXCEPTIONS
configuration variable that can be used to flip the setting of exception propagation which previously was linked toDEBUG
alone and is now linked to eitherDEBUG
orTESTING
. - Flask不再内部依赖于通过add_url_rule函数添加的规则,现在还可以接受添加到url地图的常规werkzeug规则。
- 向烧瓶应用程序对象添加了端点方法,该方法允许使用装饰器向任意端点注册回调。
- 使用Last-Modified来发送静态文件,而不是在0.6中不正确地引入Date。
- 添加了create_jinja_loader以覆盖加载程序创建过程。
- 为config.from_pyfile实施了无提示标志。
- 添加了teardown_request装饰器,适用于应在请求结束时运行的函数,而不管是否发生异常。此外,after_request的行为已更改。当异常发生时,它现在不再被执行。请参阅Upgrading to new Teardown Handling
- 已实施
flask.has_request_context()
- 已弃用init_jinja_globals。改为替换
create_jinja_environment()
方法以实现相同的功能。 - 添加了
flask.safe_join()
- 自动JSON请求数据解包现在查看charset mimetype参数。
- 如果会话中没有消息,请不要在
flask.get_flashed_messages()
上修改会话。 - before_request处理程序现在可以中止具有错误的请求。
- 不可能定义用户异常处理程序。这样,您可以从中央集线器为在请求处理期间可能发生的某些错误提供自定义错误消息(例如数据库连接错误,远程资源超时等)。)。
- 蓝图可以提供特定于蓝图的错误处理程序。
- 实现通用Pluggable Views(基于类的视图)。
版本0.6.1 ¶
漏洞修复发布,于2010年12月31日发布
- 修复了默认
OPTIONS
响应未公开Allow
标头中所有有效方法的问题。 - Jinja2模板加载语法现在允许在模板加载路径前面加入“./”。以前,这导致模块设置的问题。
- 修复了为静态文件夹忽略模块的子域设置的问题。
- 修复了一个安全问题,允许客户端下载任意文件,如果主机服务器是一个基于Windows的操作系统,客户端使用反斜杠来逃离暴露文件的目录。
版本0.6 ¶
发布于2010年7月27日,代号威士忌
- 后请求函数现在以相反的注册顺序调用。
- OPTIONS现在由Flask自动实现,除非应用程序明确地将“OPTIONS”作为方法添加到URL规则。在这种情况下,没有自动OPTIONS处理踢。
- 如果没有模块的静态文件夹,静态规则现在甚至就位。这是为了帮助GAE,它将删除静态文件夹,如果它是.yml文件中的映射的一部分。
config
现在在模板中可用作config。- 上下文处理器将不再覆盖直接传递给render函数的值。
- 添加了使用新的
MAX_CONTENT_LENGTH
配置值限制传入请求数据的功能。 flask.Module.add_url_rule()
方法的端点现在是可选的,以与应用程序对象上的相同名称的函数一致。- 添加了一个
flask.make_response()
函数,可以简化在视图中创建响应对象实例。 - 增加了基于信号灯的信令支持。此功能当前是可选的,应由扩展和应用程序使用。如果要使用它,请确保已安装blinker。
- 重构了创建URL适配器的方式。此过程现在可以使用
create_url_adapter()
方法完全自定义。 - 模块现在可以注册子域,而不仅仅是URL前缀。这使得可以将整个模块绑定到可配置子域。
版本0.5 ¶
发布日期:2010年7月6日,代号Calvados
- 修复了由于无法指定服务器名称而导致的子域错误。现在可以使用
SERVER_NAME
配置键设置服务器名称。此键现在也用于设置跨子域的会话cookie。 - 自动转义不再对所有模板有效。而是只对
.html
,.htm
,.xml
和.xhtml
有效。在内部模板中,可以使用autoescape
标记更改此行为。 - refactored内部。它现在包含多个单个文件。
flask.send_file()
现在发出etags并且能够执行内建的条件响应。- (暂时)下降对压缩应用程序的支持。这是一个很少使用的功能,导致一些混乱的行为。
- 增加了对每个包模板和静态文件目录的支持。
- 删除了对create_jinja_loader的支持,由于改进的模块支持,它不再在0.5中使用。
- 添加了一个帮助函数来公开来自任何目录的文件。
版本0.4 ¶
发布于2010年6月18日,代号为Rakia
- 添加了从模块注册应用程序宽错误处理程序的能力。
after_request()
处理程序现在也被调用,如果请求死亡与异常和错误处理页面启动。- 测试客户端没有能力将请求上下文保留一段时间。这也可以用于触发不会弹出请求堆栈以进行测试的自定义请求。
- 因为Python标准库缓存日志记录器,现在可以配置日志记录器的名称以更好地支持单元测试。
- 添加了可激活单元测试助手的
TESTING
开关。 - 如果启用调试,记录器将立即切换到
DEBUG
模式。
版本0.3.1 ¶
漏洞修复发布,于2010年5月28日发布
- 修复了
flask.Config.from_envvar()
的错误报告错误 - 从烧瓶中取出一些未使用的代码
- release不再包括开发剩余文件(.git文件夹的主题,内置文档的zip和pdf文件和一些.pyc文件)
版本0.3 ¶
发布于2010年5月28日,代号为Schnaps
- 添加了对闪烁消息的类别的支持。
- 应用程序现在配置
logging.Handler
,并且当不在调试模式下时,将记录请求处理异常到该记录器。这使得可以例如在服务器错误时接收邮件。 - 添加了对上下文绑定的支持,不需要使用with语句在控制台中播放。
- 请求上下文现在在with语句中可用,使得可以进一步推动请求上下文或将其弹出。
- 增加对配置的支持。
版本0.2 ¶
发布于2010年5月12日,代号为Jägermeister
- 各种错误修复
- 集成JSON支持
- 添加了
get_template_attribute()
帮助函数。 add_url_rule()
现在也可以注册一个视图函数。- 重构的内部请求分派。
- 服务器侦听127.0.0.1默认现在修复chrome的问题。
- 添加外部URL支持。
- 添加了对
send_file()
的支持 - 模块支持和内部请求处理重构,以更好地支持可插拔应用程序。
- 会话可以设置为永久现在在每个会话的基础上。
- 更好地报告缺少的密钥。
- 增加了对Google Appengine的支持。
版本0.1 ¶
第一次公开预览发布。