变化¶
版本3.0.0¶
已发布2023/09/30
版本2.3.3¶
已发布2023/08/21
与Python3.12兼容。
要求Werkzeug>=2.3.7。
使用
flit_core
而不是setuptools
作为构建后端。重构应用程序的根路径和实例路径的确定方式。 #5160
版本2.3.2¶
已发布2023-05-01
集
Vary: Cookie
访问、修改或刷新会话时的标头。将Werkzeug要求更新为>=2.3.3以应用最新的错误修复。
版本2.3.1¶
已发布2023-04-25
还原已弃用
from flask import Markup
。 #5084
版本2.3.0¶
已发布2023-04-25
放弃对Python3.7的支持。 #5072
将最低要求更新到最新版本:Werkzeug>=2.3.0,JJIA2>3.1.2,ITS DARGAND>=2.1.2,点击>=8.1.3。
删除以前弃用的代码。 #4995
这个
push
和pop
不推荐使用的方法_app_ctx_stack
和_request_ctx_stack
对象将被删除。top
仍然存在,以给扩展更多的时间进行更新,但它将被删除。这个
FLASK_ENV
环境变量,ENV
配置密钥,以及app.env
属性被删除。这个
session_cookie_name
,send_file_max_age_default
,use_x_sendfile
,propagate_exceptions
,以及templates_auto_reload
上的属性app
都被移除了。这个
JSON_AS_ASCII
,JSON_SORT_KEYS
,JSONIFY_MIMETYPE
,以及JSONIFY_PRETTYPRINT_REGULAR
配置密钥将被删除。这个
app.before_first_request
和bp.before_app_first_request
装修工被移除了。json_encoder
和json_decoder
APP和蓝图上的属性,以及相应的json.JSONEncoder
和JSONDecoder
类,则会被删除。这个
json.htmlsafe_dumps
和htmlsafe_dump
函数将被删除。在注册后调用蓝图上的设置方法是错误而不是警告。 #4997
正在导入
escape
和Markup
从…flask
已弃用。直接从以下位置导入markupsafe
取而代之的是。 #4996这个
app.got_first_request
属性已弃用。 #4997这个
locked_cached_property
已弃用装饰器。如果需要锁定,请在修饰函数内使用锁定。 #4993信号总是可用的。
blinker>=1.6.2
是必需的依赖项。这个signals_available
属性已弃用。 #5056信号支持
async
订阅者功能。 #5049删除可能导致请求彼此短暂阻止的锁的使用。 #4993
将现代打包元数据用于
pyproject.toml
而不是setup.cfg
。 #4947确保应用带有嵌套蓝图的子域。 #4834
config.from_file
can usetext=False
to indicate that the parser wants a binary file instead. #4989如果使用空名称创建蓝图,则会引发
ValueError
。 #5010SESSION_COOKIE_DOMAIN
does not fall back toSERVER_NAME
. The default is not to set the domain, which modern browsers interpret as an exact match rather than a subdomain match. Warnings aboutlocalhost
and IP addresses are also removed. #5051这个
routes
命令显示每个规则的subdomain
或host
使用域匹配时。 #5004使用延迟的批注求值。 #5071
版本2.2.5¶
已发布2023-05-02
更新与Werkzeug 2.3.3的兼容性。
集
Vary: Cookie
访问、修改或刷新会话时的标头。
版本2.2.4¶
已发布2023-04-25
更新以兼容Werkzeug 2.3。
版本2.2.3¶
已发布2023-02-15
版本2.2.2¶
已发布2022-08-08
版本2.2.1¶
已发布2022-08-03
设置或访问
json_encoder
或json_decoder
引发弃用警告。 #4732
版本2.2.0¶
已发布2022-08-01
删除以前弃用的代码。 #4667
一些人的旧名字
send_file
参数已删除。download_name
取代attachment_filename
,max_age
取代cache_timeout
,以及etag
取代add_etags
。另外,path
取代filename
在……里面send_from_directory
。这个
RequestContext.g
属性返回AppContext.g
被移除。
将Werkzeug依赖项更新为>=2.2。
应用程序和请求上下文直接使用Python上下文变量而不是Werkzeug上下文变量进行管理
LocalStack
。这应该会带来更好的性能和内存使用。 #4682扩展维护人员,请注意
_app_ctx_stack.top
和_request_ctx_stack.top
都已被弃用。将数据存储在g
而是使用唯一的前缀,如g._extension_name_attr
。
这个
FLASK_ENV
环境变量和app.env
属性,消除了开发模式和调试模式之间的区别。调试模式应直接使用--debug
选项或app.run(debug=True)
。 #4714代理配置密钥的一些属性
app
已弃用:session_cookie_name
,send_file_max_age_default
,use_x_sendfile
,propagate_exceptions
,以及templates_auto_reload
。请改用相关的配置键。 #4716将新的定制点添加到
Flask
对象,用于许多以前的全局行为。flask.url_for
will callapp.url_for
. #4568flask.abort
will callapp.aborter
.Flask.aborter_class
andFlask.make_aborter
can be used to customize this aborter. #4567flask.redirect
will callapp.redirect
. #4569flask.json
is an instance ofJSONProvider
. A different provider can be set to use a different JSON library.flask.jsonify
will callapp.json.response
, other functions inflask.json
will call corresponding functions inapp.json
. #4692
JSON配置将移至默认属性
app.json
提供商。JSON_AS_ASCII
,JSON_SORT_KEYS
,JSONIFY_MIMETYPE
,以及JSONIFY_PRETTYPRINT_REGULAR
都已被弃用。 #4692设置自定义
json_encoder
和json_decoder
应用程序或蓝图上的类以及相应的json.JSONEncoder
和JSONDecoder
类,已弃用。JSON行为现在可以使用app.json
提供程序接口。 #4692json.htmlsafe_dumps
andjson.htmlsafe_dump
are deprecated, the function is built-in to Jinja now. #4692重构
register_error_handler
以合并错误检查。重写一些错误消息以使其更加一致。 #4559使用蓝图修饰器和注册蓝图后打算设置的功能将显示警告。在下一个版本中,这将变成一个错误,就像应用程序设置方法一样。 #4571
before_first_request
is deprecated. Run setup code when creating the application instead. #4605添加了
View.init_every_request
类属性。如果视图子类将其设置为False
,则该视图不会针对每个请求创建新实例。 #2520 。A
flask.cli.FlaskGroup
单击组可以作为子命令嵌套在自定义CLI中。 #3263增列
--app
和--debug
选项添加到flask
CLI,而不是要求通过环境变量设置它们。 #2836增列
--env-file
选项添加到flask
CLI。这样除了可以指定要加载的dotenv文件外,还可以指定.env
和.flaskenv
。 #3108不再需要在上修饰自定义CLI命令
app.cli
或blueprint.cli
使用@with_appcontext
,应用程序上下文将在该点上处于活动状态。 #2410SessionInterface.get_expiration_time
uses a timezone-aware value. #4645视图函数可以直接返回生成器,而不是将它们包装在
Response
。 #4629增列
stream_template
和stream_template_string
函数将模板呈现为片断流。 #4629一种在调试和测试过程中保持上下文的新实现。 #4666
request
,g
, and other context-locals point to the correct data when running code in the interactive debugger console. #2836TearDown函数始终在请求结束时运行,即使保留了上下文。它们还会在保存的上下文弹出后运行。
stream_with_context
将上下文与with client
阻止。它将在以下情况下被清理response.get_data()
或response.close()
被称为。
允许从视图函数返回列表,将其转换为JSON响应,就像DICT一样。 #4672
类型检查时,允许
TypedDict
从视图函数返回。 #4695移除
--eager-loading/--lazy-loading
选项中的flask run
指挥部。该应用程序总是在第一次加载时立即加载,然后在重新加载程序中缓慢加载。重新加载器总是立即打印错误,但会继续服务。拆卸内部DispatchingApp
前一个实现使用的中间件。 #4715
版本2.1.3¶
已发布2022/07/13
版本2.1.2¶
已发布2022-04-28
版本2.1.1¶
发布日期:2022-03-30
将Importlib_METADATA的最低要求版本设置为3.6.0,这是在低于3.10的Python上所需的版本。 #4502
版本2.1.0¶
已发布2022-03-28
放弃对Python3.6的支持。 #4335
将Click依赖项更新为>=8.0。 #4008
删除以前弃用的代码。 #4337
CLI未通过
script_info
应用程序工厂功能。config.from_json
被替换为config.from_file(name, load=json.load)
。json
函数不再需要encoding
参数。safe_join
被移除,请使用werkzeug.utils.safe_join
取而代之的是。total_seconds
被移除,请使用timedelta.total_seconds
取而代之的是。相同的蓝图不能以相同的名称注册。使用
name=
注册以指定唯一名称时。测试客户端的
as_tuple
参数将被删除。使用response.request.environ
取而代之的是。 #4417
部分参数位于
send_file
和send_from_directory
在2.0版中已重命名。旧名称的弃用期限延长至2.2。请确保在测试时显示弃用警告。attachment_filename
已重命名为download_name
。cache_timeout
已重命名为max_age
。add_etags
已重命名为etag
。filename
已重命名为path
。
这个
RequestContext.g
属性已弃用。使用g
直接或AppContext.g
取而代之的是。 #3898copy_current_request_context
can decorate async functions. #4303CLI使用
importlib.metadata
而不是pkg_resources
要加载命令输入点,请执行以下操作。 #4419覆盖
FlaskClient.open
不会在重定向时导致错误。 #3396添加一个
--exclude-patterns
选项添加到flask run
CLI命令指定将被重新加载程序忽略的模式。 #4188使用延迟加载(调试器的默认设置)时,
flask run
命令在加载器线程中保持可用。 #4460删除会话Cookie使用
httponly
旗帜。 #4485轻松地打字
errorhandler
以允许用户使用更精确的类型并多次装饰相同的函数。 #4095, #4295, #4297修复以下项目的键入
__exit__
与更好地兼容的方法ExitStack
。 #4474来自Werkzeug,对于重定向响应
Location
默认情况下,标题URL将保持相对,并排除方案和域。 #4496增列
Config.from_prefixed_env()
从以开头的环境变量加载配置值FLASK_
或者另一个前缀。这在默认情况下将值解析为JSON,并允许在嵌套的Decits中设置键。 #4479
版本2.0.3¶
已发布2022/02/14
测试客户端的
as_tuple
参数已弃用,将在Werkzeug 2.1中删除。它现在也不建议在Flask2.1中删除,但在2.0.x中仍与两者兼容。使用response.request.environ
取而代之的是。 #4341的FIX类型批注
errorhandler
装饰师。 #4295将导致其隐藏的更改恢复到CLI
ImportError
导入应用程序时的回溯。 #4307app.json_encoder
andjson_decoder
are only passed todumps
andloads
if they have custom behavior. This improves performance, mainly on PyPy. #4349当出现以下情况时,错误消息更清晰
after_this_request
在请求上下文之外使用。 #4333
版本2.0.2¶
已发布2021/10/04
的FIX类型批注
teardown_*
方法:研究方法。 #4093的FIX类型批注
before_request
和before_app_request
装修工。 #4104修复了类型要求模板全局修饰符接受不带参数的函数的问题。 #4098
支持带有异步处理程序的视图和方法视图实例。 #4112
增强打字
app.errorhandler
装饰师。 #4095修正了用不同的名称注册两次蓝图的问题。 #4124
修复的类型
static_folder
接受pathlib.Path
。 #4150jsonify
handlesdecimal.Decimal
by encoding tostr
. #4157正确处理CLI延迟加载中引发的延迟错误。 #4096
CLI加载器句柄
**kwargs
在一个create_app
功能。 #4170确定……的顺序
before_request
以及在视图返回之前触发的其他回调。它们从应用程序向下调用,直到最接近的嵌套蓝图。 #4229
版本2.0.1¶
已发布2021-05-21
重新添加
filename
中的参数send_from_directory
。这个filename
参数已重命名为path
,旧名称已弃用。 #4019将顶级名称标记为已导出,以便类型检查了解用户项目中的导入。 #4024
的FIX类型批注
g
并通知mypy它是具有任意属性的命名空间对象。 #4020修复一些在Python3.6.0中不可用的类型。 #4040
改进以下项目的打字
send_file
,send_from_directory
,以及get_send_file_max_age
。 #4044 , #4026当蓝图名称包含点时显示错误。这个
.
具有特殊含义,它用于分隔(嵌套的)蓝图名称和端点名称。 #4041嵌套使用
url_prefix
价值。 #4037将更改恢复为完成URL匹配的顺序。加载会话后,会再次匹配该URL,因此该会话在自定义URL转换器中可用。 #4053
重新添加已弃用
Config.from_json
,它被意外地提前移除。 #4078使用以下命令改进某些函数的输入
Callable
在他们的类型签名中,重点是装饰工厂。 #4060嵌套的蓝图使用其虚线名称进行注册。这使得同名的不同设计图可以嵌套在不同的位置。 #4069
register_blueprint
takes aname
option to change the (pre-dotted) name the blueprint is registered with. This allows the same blueprint to be registered multiple times with unique names forurl_for
. Registering the same blueprint with the same name multiple times is deprecated. #1091改进以下项目的打字
stream_with_context
。 #4052
版本2.0.0¶
已发布2021-05-11
放弃对Python2和3.5的支持。
Bump其他托盘项目的最低版本:Werkzeug>=2,JJIA2>=3,MarkupSafe>=2,ItsDangious>=2,Click>=8。请务必检查每个项目的更改日志。为了更好地兼容仍然需要Click 7的其他应用程序(例如芹菜),目前还没有对Click 8的硬依赖,但使用Click 7会触发DeproationWarning,而Flask2.1将取决于Click 8。
JSON支持不再使用Simplejson。要使用另一个JSON模块,请重写
app.json_encoder
和json_decoder
。 #3555这个
encoding
JSON函数的选项已弃用。 #3562传球
script_info
应用程序工厂函数已弃用。这是不能在外部携带的flask
指挥部。使用click.get_current_context().obj
如果需要的话。 #3552当应用程序在查找命令时加载失败时,CLI会显示更好的错误消息。 #2741
增列
SessionInterface.get_cookie_name
以允许动态设置会话Cookie名称。 #3369增列
Config.from_file
使用任意文件加载器加载配置,例如toml.load
或json.load
。Config.from_json
为支持这一点而受到反对。 #3398这个
flask run
命令只会在重新加载时延迟错误。初始调用期间出现的错误将导致服务器立即退出跟踪。 #3431send_file
raises aValueError
when passed anio
object in text mode. Previously, it would respond with 200 OK and an empty file. #3358在使用临时证书时,请检查密码库而不是PyOpenSSL。 #3492
使用指定工厂函数时
FLASK_APP
,可以传递关键字参数。 #3553在加载
.env
或.flaskenv
文件,则当前工作目录不再更改为该文件的位置。 #3560当返回一个
(response, headers)
元组从一个视图中,头替换而不是扩展响应上的现有头。例如,这允许设置Content-Type
为jsonify()
。使用response.headers.extend()
如果需要扩展的话。 #3628这个
Scaffold
类提供了一个公共API,用于Flask
和Blueprint
上课。Blueprint
信息存储在属性中,就像Flask
,而不是不透明的lambda函数。这是为了提高一致性和可维护性。 #3215包括
samesite
和secure
删除会话Cookie时的选项。 #3726支持传递
pathlib.Path
至static_folder
。 #3579send_file
andsend_from_directory
are wrappers around the implementations inwerkzeug.utils
. #3828一些人
send_file
参数已重命名,旧名称已弃用。attachment_filename
已重命名为download_name
。cache_timeout
已重命名为max_age
。add_etags
已重命名为etag
。 #3828, #3883send_file
passesdownload_name
even ifas_attachment=False
by usingContent-Disposition: inline
. #3828send_file
setsconditional=True
andmax_age=None
by default.Cache-Control
is set tono-cache
ifmax_age
is not set, otherwisepublic
. This tells browsers to validate conditional requests instead of using a timed cache. #3828helpers.safe_join
is deprecated. Usewerkzeug.utils.safe_join
instead. #3828请求上下文在打开会话之前进行路由匹配。这可能允许会话接口根据以下条件更改行为
request.endpoint
。 #3776使用JJJA的实现
|tojson
过滤。 #3881为常见的HTTP方法添加路由修饰符。例如,
@app.post("/login")
是一条捷径@app.route("/login", methods=["POST"])
。 #3907支持异步视图、错误处理程序、请求之前和之后以及teardown功能。 #3412
加载时将默认编码设置为“UTF-8”
.env
和.flaskenv
允许使用非ASCII字符的文件。 #3931flask shell
sets up tab and history completion like the defaultpython
shell ifreadline
is installed. #3941helpers.total_seconds()
is deprecated. Usetimedelta.total_seconds()
instead. #3962添加类型提示。 #3973 。
版本1.1.4¶
已发布2021-05-13
更新
static_folder
使用_compat.fspath
而不是os.fspath
要继续支持低于3.6版本的Python #4050
版本1.1.3¶
已发布2021-05-13
版本1.1.2¶
发布2020-04-03
版本1.1.1¶
已发布2019-07-08
这个
flask.json_available
为了与某些扩展兼容,重新添加了标志。它在使用时会发出弃用警告,并将在2.0.0版中删除。 #3288
版本1.1.0¶
已发布2019-07-04
将最低Werkzeug版本提升至>=0.15。
放弃对Python3.4的支持。
的错误处理程序
InternalServerError
或500
将始终传递一个InternalServerError
。如果它们是由于未处理异常而被调用,则原始异常现在可用e.original_exception
而不是直接传递给处理程序。如果处理程序是用于基本处理程序,则情况也是如此HTTPException
。这使得错误处理程序行为更加一致。 #3266Flask.finalize_request
对所有未处理的异常调用,即使没有500
错误处理程序。
Flask.logger
takes the same name asFlask.name
(the value passed asFlask(import_name)
. This reverts 1.0's behavior of always logging to"flask.app"
, in order to support multiple apps in the same process. A warning will be shown if old configuration is detected that needs to be moved. #2866RequestContext.copy
includes the current session object in the request context copy. This preventssession
pointing to an out-of-date object. #2935使用内置的RequestContext,主机报头中不可打印的Unicode字符将导致HTTP 400响应,而不是像以前那样产生HTTP 500。 #2994
send_file
supportsPathLike
objects as described in PEP 519, to supportpathlib
in Python 3. #3059send_file
supportsBytesIO
partial content. #2957open_resource
accepts the "rt" file mode. This still does the same thing as "r". #3163这个
MethodView.methods
基类中设置的属性由子类使用。 #3138Flask.jinja_options
is adict
instead of anImmutableDict
to allow easier configuration. Changes must still be made before creating the environment. #3190烧瓶的
JSONMixin
对于请求和响应,包装器被移到了Werkzeug。使用带有烧瓶特定支持的Werkzeug版本。这会将Werkzeug依赖项增加到>=0.15。 #3125这个
flask
命令入口点得到简化,充分利用了沃克泽格0.15‘S更好的重装机支持。这会将Werkzeug依赖项增加到>=0.15。 #3022支持
static_url_path
这以一个正斜杠结束。 #3134支撑为空
static_folder
不需要设置空的static_url_path
也是。 #3124jsonify
supportsdataclass
objects. #3195允许自定义
Flask.url_map_class
用于布线。 #3069开发服务器端口可以设置为0,这会告诉操作系统选择一个可用的端口。 #2926
的返回值
cli.load_dotenv
与文档更加一致。它会回来的False
如果没有安装python-dotenv,或者如果给定的路径不是文件。 #2937信令支持有一个存根,用于
connect_via
在未安装Blinker库时调用。 #3208添加一个
--extra-files
选项添加到flask run
CLI命令指定将在更改时触发重新加载程序的额外文件。 #2897允许从视图函数返回词典。类似于返回字符串将产生
text/html
响应,返回Dict将调用jsonify
生产出一种application/json
回应。 #3111蓝图有一个
cli
点击点赞群组app.cli
。在蓝图中注册的CLI命令将作为一个组在flask
指挥部。 #1357 。当使用测试客户端作为上下文管理器时 (
with client:
),则在块退出时弹出所有保留的请求上下文,确保正确清理嵌套的上下文。 #3157当不支持视图返回类型时,显示更好的错误消息。 #3214
flask.testing.make_test_environ_builder()
has been deprecated in favour of a new classflask.testing.EnvironBuilder
. #3232这个
flask run
如果不是使用SSL支持构建Python,则命令不再失败。使用--cert
选项将显示相应的错误消息。 #3211现在,URL匹配发生在请求上下文被推送之后,而不是在它被创建时。这允许自定义URL转换器访问应用程序和请求上下文,例如查询数据库中的ID。 #3088
版本1.0.4¶
已发布2019-07-04
版本1.0.3¶
发布2019-05-17
send_file
encodes filenames as ASCII instead of Latin-1 (ISO-8859-1). This fixes compatibility with Gunicorn, which is stricter about header encodings than PEP 3333. #2766允许使用自定义CLI
FlaskGroup
设置调试标志,而不总是根据环境变量将其覆盖。 #2765flask --version
outputs Werkzeug's version and simplifies the Python version. #2825send_file
handles anattachment_filename
that is a native Python 2 string (bytes) with UTF-8 coded bytes. #2933注册的通用错误处理程序
HTTPException
将不会处理RoutingException
,在布线过程中在内部使用。这修复了1.0中引入的意外行为。 #2986通过了
json
参数为app.test_client
不推送/弹出额外的应用程序上下文。 #2900
版本1.0.2¶
已发布2018-05-02
版本1.0.1¶
已发布2018-04-29
1.0版¶
发布2018-04-26
不再支持Python2.6和3.3。
将最低依赖版本升级到最新的稳定版本:Werkzeug>=0.14,JJJA>=2.10,其危险>=0.24,点击>=5.1。 #2586
跳过
app.run
当从命令行运行FlASK应用程序时。这避免了一些令人困惑的调试行为。更改的默认设置
JSONIFY_PRETTYPRINT_REGULAR
至False
。~json.jsonify
默认情况下返回紧凑格式,在调试模式下返回缩进格式。 #2193Flask.__init__
accepts thehost_matching
argument and sets it onFlask.url_map
. #1559Flask.__init__
accepts thestatic_host
argument and passes it as thehost
argument when defining the static route. #1559send_file
supports Unicode inattachment_filename
. #2223经过
_scheme
论据来自url_for
至Flask.handle_url_build_error
。 #2017Flask.add_url_rule
accepts theprovide_automatic_options
argument to disable adding theOPTIONS
method. #1489MethodView
subclasses inherit method handlers from base classes. #1936在请求开始时打开会话时产生的错误由应用程序的错误处理程序处理。 #2254
获得蓝图
Blueprint.json_encoder
和Blueprint.json_decoder
重写应用程序的编码器和解码器的属性。 #1898Flask.make_response
raisesTypeError
instead ofValueError
for bad response types. The error messages have been improved to describe why the type is invalid. #2256增列
routes
用于输出在应用程序上注册的路由的CLI命令。 #2259当会话Cookie域是裸主机名或IP地址时显示警告,因为这些可能在某些浏览器(如Chrome)中不能正常运行。 #2282
允许IP地址作为确切的会话Cookie域。 #2282
SESSION_COOKIE_DOMAIN
is set if it is detected throughSERVER_NAME
. #2282自动检测零参数应用程序工厂名为
create_app
或make_app
从…FLASK_APP
。 #2297工厂函数不需要使用
script_info
参数来使用flask
指挥部。如果它们接受单个参数或名为script_info
vt.的.ScriptInfo
对象将被传递。 #2319FLASK_APP
can be set to an app factory, with arguments if needed, for exampleFLASK_APP=myproject.app:create_app('dev')
. #2326FLASK_APP
can point to local packages that are not installed in editable mode, althoughpip install -e
is still preferred. #2414这个
View
类属性View.provide_automatic_options
设置在View.as_view
,以供检测Flask.add_url_rule
。 #2316错误处理将尝试注册的处理程序
blueprint, code
,app, code
,blueprint, exception
,app, exception
。 #2314Cookie
is added to the response'sVary
header if the session is accessed at all during the request (and not deleted). #2288Flask.test_request_context
acceptssubdomain
andurl_scheme
arguments for use when building the base URL. #1621集
APPLICATION_ROOT
至'/'
默认情况下。当它设置为时,这已经是隐式缺省值None
。TRAP_BAD_REQUEST_ERRORS
is enabled by default in debug mode.BadRequestKeyError
has a message with the bad key in debug mode instead of the generic bad request message. #2348允许向注册新标记
TaggedJSONSerializer
以支持在会话Cookie中存储其他类型。 #2352只有在请求尚未被推送到上下文堆栈的情况下才打开会话。这使得
stream_with_context
生成器来访问包含视图使用的同一会话。 #2354增列
json
测试客户端请求方法的关键字参数。这将把给定的对象转储为JSON并设置适当的内容类型。 #2358将JSON处理提取到应用于
Request
和Response
上课。这将添加Response.is_json
和Response.get_json
方法添加到响应中,使测试JSON响应更加容易。 #2358删除了错误处理程序缓存,因为它导致某些异常继承层次结构出现意外结果。如果希望避免遍历MRO,请为每个异常显式注册处理程序。 #2362
修复了Aware、非UTC日期时间的错误JSON编码。 #2374
模板自动重新加载将遵循调试模式,即使
Flask.jinja_env
已经被访问过。 #2373已删除以下过时的旧代码。 #2385
flask.ext
-直接按扩展名导入扩展名,而不是通过flask.ext
命名空间。例如,import flask.ext.sqlalchemy
vbl.成为import flask_sqlalchemy
。Flask.init_jinja_globals
-扩展Flask.create_jinja_environment
取而代之的是。Flask.error_handlers
-跟踪者Flask.error_handler_spec
,使用Flask.errorhandler
注册处理程序。Flask.request_globals_class
-使用Flask.app_ctx_globals_class
取而代之的是。Flask.static_path
-使用Flask.static_url_path
取而代之的是。Request.module
-使用Request.blueprint
取而代之的是。
这个
Request.json
属性不再被弃用。 #1421支持传递
EnvironBuilder
或dict
至test_client.open
。 #2412这个
flask
命令和Flask.run
将从中加载环境变量.env
和.flaskenv
文件(如果安装了python-dotenv)。 #2416将完整的URL传递给测试客户端时,将使用URL中的方案,而不是
PREFERRED_URL_SCHEME
。 #2430Flask.logger
has been simplified.LOGGER_NAME
andLOGGER_HANDLER_POLICY
config was removed. The logger is always namedflask.app
. The level is only set on first access, it doesn't checkFlask.debug
each time. Only one format is used, not different ones depending onFlask.debug
. No handlers are removed, and a handler is only added if no handlers are already configured. #2436蓝图视图函数名称不能包含点。 #2450
修好一个
ValueError
由无效引起Range
在某些情况下的请求。 #2526默认情况下,开发服务器使用线程。 #2529
加载配置文件
silent=True
将忽略ENOTDIR
错误。 #2581经过
--cert
和--key
选项至flask run
通过HTTPS运行开发服务器。 #2606增列
SESSION_COOKIE_SAMESITE
要控制SameSite
属性添加到会话Cookie上。 #2607增列
Flask.test_cli_runner
创建一个Click运行器,该运行器可以调用FlaskCLI命令进行测试。 #2636默认情况下禁用子域匹配,并设置
SERVER_NAME
不会隐式启用它。它可以通过传递subdomain_matching=True
发送到Flask
构造函数。 #2635蓝图上去掉了一个尾部的斜杠
url_prefix
当它在应用程序中注册时。 #2629Request.get_json
doesn't cache the result if parsing fails whensilent
is true. #2651Request.get_json
no longer accepts arbitrary encodings. Incoming JSON should be encoded using UTF-8 per RFC 8259, but Flask will autodetect UTF-8, -16, or -32. #2691增列
MAX_COOKIE_SIZE
和Response.max_cookie_size
控制Werkzeug何时警告浏览器可能会忽略的大Cookie。 #2693更新了文档主题,使文档在小窗口中看起来更好。 #2709
重写了教程文档和示例项目,以采取更有条理的方法来帮助新用户避免常见的陷阱。 #2676
版本0.12.5¶
发布时间2020-02-10
将Werkzeug设置为<1.0.0。 #3497
版本0.12.4¶
已发布2018-04-29
重新打包0.12.3以修复程序包布局问题。 #2728
版本0.12.3¶
发布2018-04-26
版本0.12.2¶
发布2017-05-16
修复中的错误
safe_join
在Windows上。
版本0.12.1¶
发布2017-03-31
版本0.12¶
发布2016-12-21,代号Punsch
Cli命令现在响应
--version
。中文件类对象的Mimetype猜测和ETag生成
send_file
已被移除。 #104 ,:pr`1849`中的Mimetype猜测
send_file
现在响亮地失败了,不会退回到application/octet-stream
。 #1988制作
flask.safe_join
能够连接多条路径,如os.path.join
#1730恢复导致开发服务器崩溃的行为更改,而不是返回内部服务器错误。 #2006
正确调用常规请求调度和错误处理程序的响应处理程序。
默认情况下,禁用应用程序记录器的记录器传播。
在中添加对范围请求的支持
send_file
。app.test_client
包括预置的默认环境,现在可以直接设置,而不是按client.get
。修复了在PyPy3下运行时的崩溃。 #1814
版本0.11.1¶
已公布2016-06-07
修复了阻止
FLASK_APP=foobar/__init__.py
从工作中脱身。 #1872
版本0.11¶
发布2016-05-29,代号Absinthe
添加了对将顶级数组序列化到
jsonify
。这在古老的浏览器中引入了安全风险。在_RENDER_TEMPLATE信号之前添加。
增列
**kwargs
至Flask.test_client
支持将其他关键字参数传递给Flask.test_client_class
。增列
SESSION_REFRESH_EACH_REQUEST
控制Set-Cookie行为的配置键。如果设置为True
如果设置为,则将刷新每个请求的永久会话并延长其生存期False
只有在会话实际修改时,才会修改它。非永久会话不受此影响,如果浏览器窗口关闭,非永久会话将始终过期。使FlASK支持传入数据的自定义JSON MIMETYPE。
添加了对在表单中返回元组的支持
(response, headers)
从VIEW函数。增列
Config.from_json
。增列
Flask.config_class
。增列
Config.get_namespace
。模板不再在调试模式之外自动重新加载。这可以使用新的
TEMPLATES_AUTO_RELOAD
配置密钥。为Python3.3‘S命名空间加载器中的限制添加了解决方法。
添加了使用Python3.3‘S命名空间包时对显式根路径的支持。
增列
flask
以及flask.cli
模块通过CLI系统启动本地调试服务器。这是推荐的,而不是旧的flask.run()
方法,因为它的工作速度更快、更可靠,这是因为采用了不同的设计,并且还替换了Flask-Script
。现在首先检查与特定类匹配的错误处理程序,从而允许捕获作为HTTP异常的子类的异常(在
werkzeug.exceptions
)。这使得扩展作者可以创建默认情况下会导致他们选择的HTTP错误的异常,但如果需要,可以使用自定义错误处理程序捕获这些异常。增列
Config.from_mapping
。现在,即使禁用了DEBUG,FASK也会默认记录。日志格式现在是硬编码的,但默认日志处理可以通过
LOGGER_HANDLER_POLICY
配置密钥。删除了不推荐使用的模块功能。
添加了
EXPLAIN_TEMPLATE_LOADING
配置标志,当启用该标志时,将指示烧瓶解释如何定位模板。这应该有助于用户在加载错误的模板时进行调试。按照模板加载的注册顺序强制执行蓝图处理。
将测试套件移植到py.test。
已弃用
request.json
赞成……request.get_json()
。在jsonify()方法中添加“美观”和“压缩”分隔符定义。在以下情况下减小JSON响应大小
JSONIFY_PRETTYPRINT_REGULAR=False
通过删除默认情况下在分隔符之后包含的不必要空格。JSON响应现在以换行符结尾,因为按照惯例,Unix文本文件以换行符结尾,并且某些客户端在缺少换行符时不能很好地处理。 #1262
自动提供的
OPTIONS
如果用户使用小写版本注册了重写规则,则现在正确禁用了方法options
。 #1288flask.json.jsonify
now supports thedatetime.date
type. #1326不要将已捕获的异常的异常信息泄露给上下文拆卸处理程序。 #1393
允许自定义JJJA环境子类。 #1422
更新了扩展开发指南。
flask.g
现在有了pop()
和setdefault
方法:研究方法。启用自动转义
flask.templating.render_template_string
默认情况下。 #1515flask.ext
is now deprecated. #1484send_from_directory
now raises BadRequest if the filename is invalid on the server OS. #1763添加了
JSONIFY_MIMETYPE
配置变量。 #1728拆卸处理过程中的异常将不会再让糟糕的应用程序上下文挥之不去。
已修复损坏
test_appcontext_signals()
测试用例。举起一个
AttributeError
在……里面helpers.find_package
并提供一条有用的消息,解释为什么在 PEP 302 使用导入挂接时不带is_package()
方法。修复了导致在输入请求或应用程序上下文之前引发的异常被传递给拆卸处理程序的问题。
修复了在请求绝对URL时从测试客户端的请求中删除查询参数的问题。
制造
@before_first_request
就像预期的那样变成了一个装饰师。修复了在发送带有名称的文件流时出现的eTags错误。
固定
send_from_directory
未正确展开到应用程序根路径。更改了第一个请求处理程序之前的逻辑,以在调用后翻转标志。这将允许一些潜在危险但可能应该被允许的用途。
修复了处理程序从
app.url_build_error_handlers
重新设计了BuildError
。
版本0.10.1¶
已发布2013-06-14
修复了以下问题
|tojson
没有用单引号引起来,这会使过滤器在HTML属性中无法正常工作。现在可以在单引号属性中使用该过滤器。这应该会使该滤镜更容易与angular.js一起使用。向会话系统添加了对字节字符串的支持。这打破了人们将用于令牌验证的二进制数据放入会话的常见情况的兼容性。
修复了为同一终结点注册同一方法两次会错误地触发异常的问题。
版本0.10¶
2013-06-13发布,代号Limoncello
将默认Cookie序列化格式从PICLE更改为JSON,以限制在密钥泄露时攻击者可能造成的影响。
增列
template_test
方法添加到已有的template_filter
方法族。增列
template_global
方法添加到已有的template_filter
方法族。设置x-sendfile的内容长度标头。
tojson
过滤器现在不会转义HTML5解析器中的脚本块。tojson
在模板中使用现在默认情况下是安全的。由于逃逸行为的不同,这是允许的。现在,如果您尝试在已使用的终结点上注册新函数,则Flask会引发错误。
添加了围绕Simplejson的包装器模块,并添加了DateTime对象的默认序列化。这允许更轻松地定制FlaskTM或任何FlaskTM扩展处理JSON的方式。
删除了不推荐使用的内部
flask.session
模块别名。使用flask.sessions
取而代之的是获取会话模块。这不能与之混淆flask.session
会话代理。现在可以在没有请求上下文的情况下呈现模板。行为略有不同,因为
request
,session
和g
对象将不可用,并且不调用BluePrint的上下文处理器。配置对象现在作为真正的全局对象可用于模板,而不是通过上下文处理器,这使得它在默认情况下甚至在导入的模板中也可用。
添加了生成非ASCII编码的JSON的选项,这应该会导致通过网络传输的字节更少。默认情况下,它处于禁用状态,以避免与可能需要的现有库混淆
flask.json.dumps
默认情况下返回字节。flask.g
现在存储在应用程序上下文中,而不是请求上下文中。flask.g
现在获得了一个get()
不会在不存在的项上出错的方法。flask.g
现在可以与in
运算符来查看定义的内容,它现在是可迭代的,并将生成存储的所有属性。flask.Flask.request_globals_class
已更名为flask.Flask.app_ctx_globals_class
与0.10以来它所做的相比,这是一个更好的名字。request
,session
和g
现在还作为代理添加到模板上下文中,从而使它们在导入的模板中可用。但是,必须非常小心地处理这些问题,因为在宏外使用可能会导致缓存。如果传递了代理异常,则FASK将不再调用错误的错误处理程序。
添加了本地主机中Chrome的Cookie无法与域名一起工作的解决方法。
更改了从会话中选择Cookie值的默认值的逻辑,以便更好地与Google Chrome一起工作。
增列
message_flashed
简化闪烁测试的信号。添加了对复制请求上下文的支持,以便更好地使用Greenlet。
删除了自定义JSON HTTP异常子类。如果你依赖它们,你可以自己简单地重新引入它们。然而,由于界面有缺陷,强烈反对使用它们。
更改了对Python的要求:现在需要Python2.6或2.7来为Python3.3的移植做准备。
更改了tearDown系统通知异常的方式。现在,如果某个对象在错误处理过程的中途处理异常,这将更加可靠。
调试模式中的请求上下文保存现在保留了周围的异常信息,这意味着teardown处理程序能够区分错误和成功案例。
添加了
JSONIFY_PRETTYPRINT_REGULAR
配置变量。FASK现在默认情况下对JSON键进行排序,不会因为不同工作进程之间的散列种子不同而对HTTP缓存进行垃圾处理。
增列
appcontext_pushed
和appcontext_popped
信号。内置的run方法现在接受
SERVER_NAME
在选择要在其上运行的默认端口时考虑。增列
flask.request.get_json()
作为旧的替代品flask.request.json
财产。
0.9版¶
发布2012-07-01,代号Campari
这个
Request.on_json_loading_failed
现在默认情况下返回JSON格式的响应。这个
url_for
函数现在可以生成指向所生成链接的锚点。这个
url_for
函数现在还可以显式生成特定于给定HTTP方法的URL规则。LOGGER现在只返回未显式设置的调试日志设置。
关闭请求时,取消注册WSGI环境和请求对象之间的循环依赖关系。这意味着环境
werkzeug.request
将会是None
在响应返回到WSGI服务器之后,但它的优点是CPython上不需要垃圾收集器来拆分请求,除非用户自己创建循环依赖项。会话现在存储在回调之后,因此如果会话有效负载存储在会话中,您仍然可以在请求之后的回调中修改它。
这个
Flask
类将尽可能避免导入所提供的导入名称(所需的第一个参数),从而有利于以编程方式构建Flask实例的工具。在带有定制模块钩子的系统(例如Google App Engine)上,或者当导入名称位于早于Python2.7的压缩存档(通常是一个鸡蛋)中时,Flask类将退回到使用导入。BluePrints现在有一个装饰器,可以在应用程序范围内添加自定义模板过滤器,
Blueprint.app_template_filter
。Flask类和Blueprint类现在具有用于在应用程序范围内添加自定义模板筛选器的非修饰符方法,
Flask.add_template_filter
和Blueprint.add_app_template_filter
。这个
get_flashed_messages
函数现在允许在单独的块中呈现闪烁的消息类别,方法是category_filter
争论。这个
Flask.run
方法现在接受None
为host
和port
参数,在以下情况下使用默认值None
。这允许使用配置值调用Run,例如app.run(app.config.get('MYHOST'), app.config.get('MYPORT'))
,无论是否提供配置文件,都具有正确的行为。这个
render_template
方法现在接受模板名称的可迭代或单个模板名称。以前,它只接受一个模板名称。在Iterable上,呈现找到的第一个模板。增列
Flask.app_context
其工作方式与请求上下文非常相似,但仅提供对当前应用程序的访问。这还增加了对没有活动请求上下文的URL生成的支持。视图函数现在可以返回一个元组,其中第一个实例是
Response
。这允许返回jsonify(error="error msg"), 400
从VIEW函数。Flask
和Blueprint
现在提供一个get_send_file_max_age
用于子类的挂钩,以重写在使用Flask.send_static_file
(用于默认静态文件处理程序)和helpers.send_file
。此挂接被提供一个文件名,例如,它允许按文件扩展名更改缓存控制。的默认最大年龄send_file
静态文件可以通过新的SEND_FILE_MAX_AGE_DEFAULT
配置变量,它在默认情况下使用get_send_file_max_age
实施。修复了会话实现中的一个假设,该假设可能会中断使用外部存储的会话实现上的消息闪烁。
更改了函数的元组返回值的行为。它们不再是响应对象的参数,它们现在有了定义的含义。
增列
Flask.request_globals_class
以允许在创建g
每个请求的实例。增列
required_methods
属性以查看在注册时强制添加方法的函数。增列
flask.after_this_request
。增列
flask.stream_with_context
以及多次推送上下文而不会产生意外行为的能力。
版本0.8.1¶
已公布2012-07-01
修复了未记录的
flask.session
模块在Python2.5上不能正常工作。它不应该被使用,但确实给包管理器带来了一些问题。
版本0.8¶
发布2011-09-29,代号rakija
将会话支持重构到会话接口中,这样就可以更改会话的实现,而不必重写Flask类。
空的会话Cookie现在可以自动正确删除。
视图函数现在可以选择不执行自动选项实现。
现在可以捕获HTTP异常和错误请求错误,以便它们在回溯中正常显示。
处于调试模式的FASK现在正在检测一些常见问题,并试图就此向您发出警告。
如果在处理第一个请求之后附加了一个视图,则调试模式下的FlASK现在将报告断言错误。当用户忘记提前导入视图代码时,这会提供更早的反馈。
添加了注册仅在第一个请求开始时触发一次的回调的功能
Flask.before_first_request
。格式错误的JSON数据现在将触发错误的请求HTTP异常,而不是值错误,如果不处理,后者通常会导致500内部服务器错误。这是一个向后不兼容的更改。
应用程序现在不仅有一个资源和模块所在的根路径,而且还有一个实例路径,它是放置在运行时修改的文件的指定位置(上传等)。此外,从概念上讲,这是唯一依赖于实例的外部版本控制,因此它是放置配置文件等的完美位置。
添加了
APPLICATION_ROOT
配置变量。已实施
TestClient.session_transaction
以轻松修改测试环境中的会话。内部重构了测试客户端。这个
APPLICATION_ROOT
配置变量以及SERVER_NAME
现在被测试客户端正确地用作默认设置。增列
View.decorators
以支持可插拔(基于类的)视图的更简单的装饰。修复了测试客户端与“with”语句一起使用时不会触发teardown处理程序执行的问题。
添加了对会话Cookie参数的更精细控制。
对方法视图的Head请求现在自动分派到
get
如果没有实现处理程序,则调用。实施了虚拟
flask.ext
要从中导入扩展的包。关于异常的上下文保存现在是FlaskTM本身的一个组成部分,而不再是测试客户端的一个组成部分。这清理了一些内部逻辑,降低了单元测试中请求上下文失控的几率。
修复了JJAA2环境的
list_templates
方法在涉及蓝图或模块时未返回正确的名称。
版本0.7.2¶
已发布2011-07-06
修复了URL处理器无法正确处理蓝图的问题。
版本0.7.1¶
已发布2011-06-29
添加了破坏2.5兼容性的缺失的未来导入。
修正了蓝图无限重定向的问题。
0.7版¶
发布2011-06-28,代号Grappa
增列
Flask.make_default_options_response
它可由子类用来更改OPTIONS
回应。未绑定的当地人现在提出了一个适当的
RuntimeError
而不是一个AttributeError
。现在不建议使用基于文件对象的Mimetype猜测和ETag支持
send_file
因为它不可靠。改为传递文件名或附加您自己的eTag,并手动提供正确的MIMETYPE。模块的静态文件处理现在需要显式提供静态文件夹的名称。之前的自动检测并不可靠,并导致谷歌的App Engine出现问题。在1.0之前,旧的行为将继续工作,但会发出依赖警告。
修复了FlaskJython上运行的问题。
添加了一个
PROPAGATE_EXCEPTIONS
可用于翻转先前链接到的异常传播的设置的配置变量DEBUG
,并且现在链接到任何一个DEBUG
或TESTING
。烧瓶不再在内部依赖于通过
add_url_rule
函数,现在还可以接受添加到url映射中的常规的werkzeug规则。添加了一个
endpoint
方法添加到flASK应用程序对象,该对象允许用户使用修饰符注册对任意端点的回调。将Last-Modify用于静态文件发送,而不是0.6中错误引入的日期。
增列
create_jinja_loader
要覆盖加载程序创建过程,请执行以下操作。实现了静默标志
config.from_pyfile
。增列
teardown_request
修饰符,用于无论是否发生异常都应在请求结束时运行的函数。另请注意,after_request
已经改变了。它现在不再在引发异常时执行。已实施
has_request_context
。已弃用
init_jinja_globals
。重写Flask.create_jinja_environment
方法来实现相同的功能。增列
safe_join
。自动JSON请求数据解包现在查看Charset Mimetype参数。
不修改上的会话
get_flashed_messages
如果会话中没有消息,则返回。before_request
处理程序现在能够中止出现错误的请求。无法定义用户异常处理程序。这样,您就可以从中央集线器为请求处理过程中可能发生的某些错误(例如数据库连接错误、远程资源超时等)提供定制错误消息。
BluePrints可以提供BluePrint特定的错误处理程序。
实现了基于类的泛型视图。
版本0.6.1¶
已发布2010-12-31
修复了默认设置为
OPTIONS
响应未公开Allow
标题。Jinsa2模板加载语法现在允许在模板加载路径前面使用“./”。以前,这会导致模块设置出现问题。
修复了静态文件夹忽略模块的子域设置的问题。
修复了一个安全问题,如果主机服务器是基于Windows的操作系统,并且客户端使用反斜杠来转义暴露文件的目录,则允许客户端下载任意文件。
版本0.6¶
发布2010-07-27,代号威士忌
在请求之后,现在以与注册相反的顺序调用函数。
现在,除非应用程序显式地将‘Options’作为方法添加到URL规则中,否则选项将由FlaskTM自动实现。在这种情况下,没有自动选项处理起作用。
如果没有用于模块的静态文件夹,现在甚至可以使用静态规则。这是为了帮助GAE,如果静态文件夹是.yml文件中映射的一部分,它将删除该文件夹。
Flask.config
现已在模板中提供为config
。上下文处理器将不再覆盖直接传递给呈现函数的值。
添加了使用新的
MAX_CONTENT_LENGTH
配置值。对象的终结点
Module.add_url_rule
方法现在是可选的,以与应用程序对象上的同名函数保持一致。添加了一个
make_response
该函数简化了在视图中创建响应对象实例的过程。增加了基于闪光灯的信号支持。这一功能目前是可选的,应该由扩展和应用程序使用。如果你想使用它,一定要有
blinker
已安装。重构了URL适配器的创建方式。这一过程现在可以通过
Flask.create_url_adapter
方法。模块现在可以注册子域,而不仅仅是URL前缀。这使得将整个模块绑定到可配置子域成为可能。
版本0.5.2¶
已发布2010-07-15
修复了使用模块时从目录加载模板的另一个问题。
0.5.1版¶
已发布2010-07-06
修复了使用模块时从目录加载模板的问题。
版本0.5¶
发布2010-07-06,代号Calvados
修复了由于无法指定服务器名称而导致的子域错误。服务器名称现在可以使用
SERVER_NAME
配置密钥。该密钥现在还用于设置跨子域范围的会话Cookie。对于所有模板,自动转义不再处于活动状态。取而代之的是,它仅在
.html
,.htm
,.xml
和.xhtml
。在模板中,可以使用autoescape
标签。内部重构的烧瓶。它现在由多个文件组成。
send_file
现在发射电子标签,并有能力进行条件响应内置。(暂时)放弃对压缩应用程序的支持。这是一个很少使用的功能,并导致了一些令人困惑的行为。
添加了对每个包模板和静态文件目录的支持。
删除对以下各项的支持
create_jinja_loader
由于改进了模块支持,在0.5中不再使用它。添加了一个帮助器函数,以公开任何目录中的文件。
版本0.4¶
发布2010-06-18,代号拉基亚
添加了从模块注册应用程序范围的错误处理程序的功能。
Flask.after_request
现在,如果请求因异常而终止,并且错误处理页开始生效,处理程序也会被调用。测试客户端不能将请求上下文保留更长时间。这也可用于触发不弹出请求堆栈进行测试的自定义请求。
因为Python标准库缓存了记录器,所以记录器的名称现在是可配置的,以便更好地支持单元测试。
增列
TESTING
可以激活单元测试助手的开关。记录器切换到
DEBUG
如果启用调试,则立即模式。
版本0.3.1¶
发布2010-05-28
使用修复了错误报告错误
Config.from_envvar
。删除了一些未使用的代码。
该版本不再包含开发遗留文件(主题的.git文件夹、压缩和pdf文件格式的构建文档以及一些.pyc文件)
版本0.3¶
发布2010-05-28,代号Schnaps
添加了对闪烁消息类别的支持。
应用程序现在配置一个
logging.Handler
并在未处于调试模式时将请求处理异常记录到该记录器。例如,这使得接收服务器错误的邮件成为可能。支持不需要使用WITH语句即可在控制台播放的上下文绑定。
现在,请求上下文在with语句中可用,这使得进一步推送或弹出请求上下文成为可能。
添加了对配置的支持。
版本0.2¶
发布2010-05-12,代号J?Germeister
各种错误修复
集成的JSON支持
增列
get_template_attribute
帮助器函数。Flask.add_url_rule
现在还可以注册查看函数。重构了内部请求分派。
服务器现在默认侦听127.0.0.1以修复Chrome问题。
添加了外部URL支持。
添加了对以下各项的支持
send_file
。模块支持和内部请求处理重构,以更好地支持可插拔应用程序。
现在可以将会话设置为每个会话的永久会话。
更好地报告丢失密钥的错误。
添加了对Google AppEngine的支持。
版本0.1¶
发布2010-04-16
首次公开发布预览版。