更新日志¶
版本 3.1.1¶
未发布
修复了
cli_runner.invoke
的类型提示。 #5645
版本 3.1.0¶
发布于 2024-11-13
移除对 Python 3.8 的支持。 #5623
更新最低依赖版本到最新的功能发布版本。Werkzeug >= 3.1, ItsDangerous >= 2.2, Blinker >= 1.9。 #5624,5633
提供配置选项来控制自动 OPTIONS 响应。 #5496
Flask.open_resource
/open_instance_resource
和Blueprint.open_resource
接受一个encoding
参数,用于在文本模式下打开时使用。 默认值为utf-8
。 #5504Request.max_content_length
可以针对每个请求进行自定义,而不仅仅是通过MAX_CONTENT_LENGTH
配置。 添加了MAX_FORM_MEMORY_SIZE
和MAX_FORM_PARTS
配置。 在安全页面添加了关于资源限制的文档。 #5625添加对
Partitioned
cookie 属性 (CHIPS) 的支持,使用SESSION_COOKIE_PARTITIONED
配置。 #5472-e path
优先于默认的.env
和.flaskenv
文件。load_dotenv
除了路径之外,还会加载默认文件,除非传递load_defaults=False
。 #5628支持使用
SECRET_KEY_FALLBACKS
配置进行密钥轮换,这是一个旧密钥列表,仍然可以用于取消签名。 扩展需要添加支持。 #5621修复了设置
host_matching=True
或subdomain_matching=False
如何与SERVER_NAME
交互。 设置SERVER_NAME
不再将请求限制为仅该域名。 #5553在路由期间检查
Request.trusted_hosts
,并且可以通过TRUSTED_HOSTS
配置进行设置。 #5636
版本 3.0.3¶
发布于 2024-04-07
版本 3.0.2¶
发布于 2024-02-03
版本 3.0.1¶
发布于 2024-01-18
版本 3.0.0¶
发布于 2023-09-30
版本 2.3.3¶
发布于 2023-08-21
Python 3.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
移除对 Python 3.7 的支持。 #5072
更新最低要求到最新版本:Werkzeug>=2.3.0, Jinja2>3.1.2, itsdangerous>=2.1.2, click>=8.1.3。
移除先前已弃用的代码。 #4995
已移除已弃用的
_app_ctx_stack
和_request_ctx_stack
对象的push
和pop
方法。top
仍然存在,以便为扩展提供更多时间来更新,但它将被移除。已移除
FLASK_ENV
环境变量、ENV
配置键和app.env
属性。已移除
app
上的session_cookie_name
、send_file_max_age_default
、use_x_sendfile
、propagate_exceptions
和templates_auto_reload
属性。已移除
JSON_AS_ASCII
、JSON_SORT_KEYS
、JSONIFY_MIMETYPE
和JSONIFY_PRETTYPRINT_REGULAR
配置键。已移除
app.before_first_request
和bp.before_app_first_request
装饰器。已移除 app 和 blueprint 上的
json_encoder
和json_decoder
属性,以及相应的json.JSONEncoder
和JSONDecoder
类。已移除
json.htmlsafe_dumps
和htmlsafe_dump
函数。在注册蓝图后调用蓝图上的 setup 方法是一个错误,而不是警告。 #4997
从
flask
导入escape
和Markup
已被弃用。 请直接从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
可以使用text=False
来指示解析器需要二进制文件。 #4989如果使用空名称创建蓝图,则会引发
ValueError
。 #5010SESSION_COOKIE_DOMAIN
不会回退到SERVER_NAME
。 默认值是不设置域名,现代浏览器将其解释为精确匹配,而不是子域名匹配。 关于localhost
和 IP 地址的警告也被移除。 #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
替换send_from_directory
中的filename
。已移除返回
AppContext.g
的RequestContext.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
app 对象添加了新的自定义点,用于许多以前的全局行为。flask.url_for
将调用app.url_for
。 #4568flask.abort
将调用app.aborter
。Flask.aborter_class
和Flask.make_aborter
可用于自定义此 aborter。 #4567flask.redirect
将调用app.redirect
。 #4569flask.json
是JSONProvider
的实例。 可以设置不同的提供程序以使用不同的 JSON 库。flask.jsonify
将调用app.json.response
,flask.json
中的其他函数将调用app.json
中的相应函数。 #4692
JSON 配置已移动到默认
app.json
提供程序上的属性。JSON_AS_ASCII
、JSON_SORT_KEYS
、JSONIFY_MIMETYPE
和JSONIFY_PRETTYPRINT_REGULAR
已被弃用。 #4692在 app 或 blueprint 上设置自定义
json_encoder
和json_decoder
类,以及相应的json.JSONEncoder
和JSONDecoder
类已被弃用。 现在可以使用app.json
提供程序接口覆盖 JSON 行为。 #4692json.htmlsafe_dumps
和json.htmlsafe_dump
已被弃用,该功能现在内置于 Jinja 中。 #4692重构
register_error_handler
以整合错误检查。 重写了一些错误消息,使其更加一致。 #4559在注册蓝图后,使用蓝图装饰器和旨在进行设置的函数将显示警告。 在下一个版本中,这将像应用程序 setup 方法一样成为错误。 #4571
before_first_request
已被弃用。 请在创建应用程序时运行 setup 代码。 #4605添加了
View.init_every_request
类属性。 如果视图子类将其设置为False
,则视图不会在每个请求上创建新实例。 #2520。flask.cli.FlaskGroup
Click 组可以作为子命令嵌套在自定义 CLI 中。 #3263为
flask
CLI 添加--app
和--debug
选项,而不是要求通过环境变量设置它们。 #2836为
flask
CLI 添加--env-file
选项。 这允许指定一个 dotenv 文件,除了.env
和.flaskenv
之外加载。 #3108不再需要在
app.cli
或blueprint.cli
上使用@with_appcontext
装饰自定义 CLI 命令,此时应用程序上下文已经处于活动状态。 #2410SessionInterface.get_expiration_time
使用时区感知值。 #4645视图函数可以直接返回生成器,而无需将它们包装在
Response
中。 #4629添加
stream_template
和stream_template_string
函数,以将模板呈现为片段流。 #4629调试和测试期间上下文保留的新实现。 #4666
当在交互式调试器控制台中运行代码时,
request
、g
和其他上下文本地对象指向正确的数据。 #2836Teardown 函数始终在请求结束时运行,即使上下文被保留也是如此。 它们也在保留的上下文弹出后运行。
stream_with_context
将上下文与with client
块分开保留。 它将在调用response.get_data()
或response.close()
时清理。
允许从视图函数返回列表,以像字典一样将其转换为 JSON 响应。 #4672
当进行类型检查时,允许从视图函数返回
TypedDict
。 #4695从
flask run
命令中移除--eager-loading/--lazy-loading
选项。 应用程序始终在第一次被 eager 加载,然后在 reloader 中被 lazy 加载。 reloader 始终立即打印错误,但继续服务。 移除先前实现使用的内部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,这是 Python < 3.10 上必需的版本。 #4502
版本 2.1.0¶
发布于 2022-03-28
移除对 Python 3.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
可以装饰异步函数。 #4303CLI 使用
importlib.metadata
而不是pkg_resources
来加载命令入口点。 #4419覆盖
FlaskClient.open
不会在重定向时导致错误。 #3396为
flask run
CLI 命令添加--exclude-patterns
选项,以指定重新加载器将忽略的模式。 #4188当使用惰性加载(调试器默认设置)时,来自
flask run
命令的 Click 上下文在加载器线程中仍然可用。 #4460删除会话 cookie 使用
httponly
标志。 #4485放宽
errorhandler
的类型限制,允许用户使用更精确的类型并多次装饰同一个函数。 #4095, 4295, 4297修复
__exit__
方法的类型,以更好地兼容ExitStack
。 #4474来自 Werkzeug,对于重定向响应,默认情况下
Location
标头 URL 将保持相对,并排除 scheme 和 domain。 #4496添加
Config.from_prefixed_env()
以从以FLASK_
或其他前缀开头的环境变量加载配置值。默认情况下,这会将值解析为 JSON,并允许在嵌套字典中设置键。 #4479
版本 2.0.3¶
发布于 2022-02-14
测试客户端的
as_tuple
参数已弃用,并将在 Werkzeug 2.1 中移除。现在它也在 Flask 中被弃用,将在 Flask 2.1 中移除,但在 2.0.x 版本中仍然兼容。请使用response.request.environ
代替。 #4341修复
errorhandler
装饰器的类型注解。 #4295恢复了 CLI 的一项更改,该更改导致在导入应用程序时隐藏
ImportError
回溯。 #4307app.json_encoder
和json_decoder
仅在它们具有自定义行为时才传递给dumps
和loads
。这提高了性能,主要是在 PyPy 上。 #4349当在请求上下文之外使用
after_this_request
时,显示更清晰的错误消息。 #4333
版本 2.0.2¶
发布于 2021-10-04
修复
teardown_*
方法的类型注解。 #4093修复
before_request
和before_app_request
装饰器的类型注解。 #4104修复了类型检查要求模板全局装饰器接受无参数函数的问题。 #4098
支持带有异步处理程序的 View 和 MethodView 实例。 #4112
增强
app.errorhandler
装饰器的类型检查。 #4095修复了使用不同名称注册两次蓝图的问题。 #4124
修复了
static_folder
的类型,使其接受pathlib.Path
。 #4150jsonify
通过编码为str
来处理decimal.Decimal
。 #4157正确处理 CLI 惰性加载中引发的延迟错误。 #4096
CLI 加载器处理
create_app
函数中的**kwargs
。 #4170修复了
before_request
和在视图返回之前触发的其他回调的顺序。它们从应用程序向下调用到最内层的嵌套蓝图。 #4229
版本 2.0.1¶
发布于 2021-05-21
重新添加
send_from_directory
中的filename
参数。filename
参数已重命名为path
,旧名称已弃用。 #4019将顶层名称标记为已导出,以便类型检查理解用户项目中的导入。 #4024
修复
g
的类型注解,并告知 mypy 它是一个具有任意属性的命名空间对象。 #4020修复 Python 3.6.0 中不可用的一些类型。 #4040
改进
send_file
、send_from_directory
和get_send_file_max_age
的类型检查。 #4044, #4026当蓝图名称包含点号时显示错误。
.
具有特殊含义,它用于分隔(嵌套的)蓝图名称和端点名称。 #4041当嵌套使用
url_prefix
值创建的蓝图时,合并 URL 前缀。 #4037恢复了 URL 匹配顺序的更改。URL 再次在会话加载后进行匹配,因此会话在自定义 URL 转换器中可用。 #4053
重新添加了已弃用的
Config.from_json
,它被意外提前移除。 #4078改进了类型签名中使用
Callable
的一些函数的类型检查,重点是装饰器工厂。 #4060嵌套蓝图使用它们的点状名称注册。这允许具有相同名称的不同蓝图嵌套在不同的位置。 #4069
register_blueprint
接受name
选项来更改蓝图注册时使用的(前点状)名称。这允许同一个蓝图多次注册,并为url_for
提供唯一的名称。不建议使用相同的名称多次注册同一个蓝图。 #1091改进
stream_with_context
的类型检查。 #4052
版本 2.0.0¶
发布于 2021-05-11
移除对 Python 2 和 3.5 的支持。
提升其他 Pallets 项目的最低版本要求:Werkzeug >= 2, Jinja2 >= 3, MarkupSafe >= 2, ItsDangerous >= 2, Click >= 8。请务必查看每个项目的变更日志。为了更好地兼容仍然需要 Click 7 的其他应用程序(例如 Celery),目前还没有对 Click 8 的硬性依赖,但使用 Click 7 将触发 DeprecationWarning,并且 Flask 2.1 将依赖于 Click 8。
JSON 支持不再使用 simplejson。要使用另一个 JSON 模块,请覆盖
app.json_encoder
和json_decoder
。 #3555JSON 函数的
encoding
选项已弃用。 #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
已弃用,推荐使用此方法代替。 #3398flask run
命令仅在重新加载时延迟错误。初始调用期间出现的错误将导致服务器立即退出并显示回溯。 #3431当以文本模式传递
io
对象时,send_file
会引发ValueError
。以前,它会响应 200 OK 和一个空文件。 #3358当使用 ad-hoc 证书时,检查 cryptography 库而不是 PyOpenSSL。 #3492
当使用
FLASK_APP
指定工厂函数时,可以传递关键字参数。 #3553当加载
.env
或.flaskenv
文件时,当前工作目录不再更改为文件所在的位置。 #3560当从视图返回
(response, headers)
元组时,标头会替换而不是扩展响应上的现有标头。例如,这允许为jsonify()
设置Content-Type
。如果需要扩展,请使用response.headers.extend()
。 #3628Scaffold
类为Flask
和Blueprint
类提供了通用的 API。Blueprint
信息像Flask
一样存储在属性中,而不是不透明的 lambda 函数中。这旨在提高一致性和可维护性。 #3215删除会话 cookie 时,包含
samesite
和secure
选项。 #3726支持将
pathlib.Path
传递给static_folder
。 #3579send_file
和send_from_directory
是对werkzeug.utils
中实现的包装。 #3828send_file
的一些参数已被重命名,旧名称已弃用。attachment_filename
重命名为download_name
。cache_timeout
重命名为max_age
。add_etags
重命名为etag
。 #3828, 3883send_file
即使as_attachment=False
也通过使用Content-Disposition: inline
来传递download_name
。 #3828send_file
默认设置conditional=True
和max_age=None
。如果未设置max_age
,则Cache-Control
设置为no-cache
,否则设置为public
。这告诉浏览器验证条件请求,而不是使用定时缓存。 #3828helpers.safe_join
已弃用。请使用werkzeug.utils.safe_join
代替。 #3828请求上下文在打开会话之前执行路由匹配。这可能允许会话接口根据
request.endpoint
更改行为。 #3776使用 Jinja 的
|tojson
过滤器实现。 #3881为常见的 HTTP 方法添加路由装饰器。例如,
@app.post("/login")
是@app.route("/login", methods=["POST"])
的快捷方式。 #3907支持异步视图、错误处理程序、请求前和请求后函数以及拆卸函数。 #3412
支持嵌套蓝图。 #593, 1548, #3923
加载
.env
和.flaskenv
文件时,将默认编码设置为“UTF-8”,以允许使用非 ASCII 字符。 #3931如果安装了
readline
,flask shell
会像默认的python
shell 一样设置制表符和历史记录补全。 #3941helpers.total_seconds()
已弃用。请使用timedelta.total_seconds()
代替。 #3962添加类型提示。 #3973。
版本 1.1.4¶
发布于 2021-05-13
更新
static_folder
以使用_compat.fspath
而不是os.fspath
,以继续支持 Python < 3.6 #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。
移除对 Python 3.4 的支持。
对于
InternalServerError
或500
的错误处理程序,始终会传递InternalServerError
的实例。如果由于未处理的异常而调用它们,则原始异常现在作为e.original_exception
提供,而不是直接传递给处理程序。如果处理程序用于基本HTTPException
,则情况也是如此。这使得错误处理程序的行为更加一致。 #3266即使没有
500
错误处理程序,也会为所有未处理的异常调用Flask.finalize_request
。
Flask.logger
使用与Flask.name
相同的名称(作为Flask(import_name)
传递的值)。这恢复了 1.0 版本始终记录到"flask.app"
的行为,以便在同一进程中支持多个应用程序。如果检测到需要移动的旧配置,将显示警告。 #2866RequestContext.copy
在请求上下文副本中包含当前会话对象。这可以防止session
指向过时的对象。 #2935使用内置的 RequestContext,Host 标头中不可打印的 Unicode 字符将导致 HTTP 400 响应,而不是之前的 HTTP 500。 #2994
send_file
支持 PEP 519 中描述的PathLike
对象,以支持 Python 3 中的pathlib
。 #3059send_file
支持BytesIO
部分内容。 #2957open_resource
接受 “rt” 文件模式。这仍然与 “r” 执行相同的操作。 #3163子类使用基类中设置的
MethodView.methods
属性。 #3138Flask.jinja_options
是一个dict
而不是ImmutableDict
,以便更轻松地进行配置。更改仍然必须在创建环境之前进行。 #3190Flask 的请求和响应包装器的
JSONMixin
已移至 Werkzeug。使用 Werkzeug 版本,并提供 Flask 特定的支持。这会将 Werkzeug 依赖项提升至 >= 0.15。 #3125简化了
flask
命令入口点,以利用 Werkzeug 0.15 更好的重新加载器支持。这会将 Werkzeug 依赖项提升至 >= 0.15。 #3022支持以正斜杠结尾的
static_url_path
。 #3134支持空的
static_folder
,而无需设置空的static_url_path
。 #3124jsonify
支持dataclass
对象。 #3195允许自定义用于路由的
Flask.url_map_class
。 #3069开发服务器端口可以设置为 0,这将告诉操作系统选择一个可用的端口。 #2926
cli.load_dotenv
的返回值与文档更加一致。如果未安装 python-dotenv,或者给定路径不是文件,它将返回False
。 #2937当未安装 Blinker 库时,信号支持具有
connect_via
方法的存根。 #3208为
flask run
CLI 命令添加--extra-files
选项,以指定更改时将触发重新加载器的额外文件。 #2897允许从视图函数返回字典。类似于返回字符串将生成
text/html
响应的方式,返回字典将调用jsonify
以生成application/json
响应。 #3111蓝图具有像
app.cli
一样的cli
Click 组。使用蓝图注册的 CLI 命令将作为flask
命令下的一个组提供。 #1357。当将测试客户端用作上下文管理器(
with client:
)时,当代码块退出时,所有保留的请求上下文都会被弹出,确保正确清理嵌套的上下文。 #3157当视图返回类型不受支持时,显示更好的错误消息。 #3214
flask.testing.make_test_environ_builder()
已弃用,推荐使用新类flask.testing.EnvironBuilder
。 #3232如果 Python 未构建 SSL 支持,
flask run
命令不再失败。使用--cert
选项将显示适当的错误消息。 #3211URL 匹配现在在请求上下文被推送之后发生,而不是在创建时发生。这允许自定义 URL 转换器访问应用程序和请求上下文,例如查询数据库以获取 id。 #3088
版本 1.0.4¶
发布于 2019-07-04
版本 1.0.3¶
发布于 2019-05-17
send_file
将文件名编码为 ASCII 而不是 Latin-1 (ISO-8859-1)。这修复了与 Gunicorn 的兼容性问题,Gunicorn 对标头编码的要求比 PEP 3333 更严格。#2766允许使用
FlaskGroup
的自定义 CLI 设置 debug 标志,而不会总是基于环境变量被覆盖。#2765flask --version
输出 Werkzeug 的版本并简化 Python 版本。#2825send_file
处理作为原生 Python 2 字符串(字节)且使用 UTF-8 编码字节的attachment_filename
。#2933为
HTTPException
注册的 catch-all 错误处理程序将不会处理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
不再支持 Python 2.6 和 3.3。
将最低依赖版本提升到最新的稳定版本:Werkzeug >= 0.14, Jinja >= 2.10, itsdangerous >= 0.24, Click >= 5.1。#2586
从命令行运行 Flask 应用程序时,跳过
app.run
。这避免了一些令人困惑的调试行为。将
JSONIFY_PRETTYPRINT_REGULAR
的默认值更改为False
。~json.jsonify
默认返回紧凑格式,调试模式下返回缩进格式。#2193Flask.__init__
接受host_matching
参数并在Flask.url_map
上设置它。#1559Flask.__init__
接受static_host
参数,并在定义静态路由时将其作为host
参数传递。#1559send_file
支持attachment_filename
中的 Unicode。#2223将
_scheme
参数从url_for
传递到Flask.handle_url_build_error
。#2017Flask.add_url_rule
接受provide_automatic_options
参数以禁用添加OPTIONS
方法。#1489MethodView
子类从基类继承方法处理程序。#1936在请求开始时打开会话时发生的错误由应用程序的错误处理程序处理。#2254
蓝图获得了
Blueprint.json_encoder
和Blueprint.json_decoder
属性,以覆盖应用程序的编码器和解码器。#1898Flask.make_response
对于错误的响应类型,引发TypeError
而不是ValueError
。错误消息已得到改进,以描述类型无效的原因。#2256添加
routes
CLI 命令以输出在应用程序上注册的路由。#2259当会话 cookie 域是裸主机名或 IP 地址时显示警告,因为这些可能在某些浏览器(如 Chrome)中无法正常工作。#2282
允许 IP 地址作为精确的会话 cookie 域。#2282
如果通过
SERVER_NAME
检测到SESSION_COOKIE_DOMAIN
,则会设置它。#2282从
FLASK_APP
自动检测名为create_app
或make_app
的零参数应用程序工厂。#2297工厂函数不需要接受
script_info
参数即可与flask
命令一起使用。如果它们接受单个参数或名为script_info
的参数,则将传递ScriptInfo
对象。#2319FLASK_APP
可以设置为应用程序工厂,如果需要,可以带有参数,例如FLASK_APP=myproject.app:create_app('dev')
。#2326FLASK_APP
可以指向未以可编辑模式安装的本地包,尽管仍然首选pip install -e
。#2414View
类属性View.provide_automatic_options
在View.as_view
中设置,以便被Flask.add_url_rule
检测到。#2316错误处理将尝试为
blueprint, code
,app, code
,blueprint, exception
,app, exception
注册的处理程序。#2314如果在请求期间访问了会话(且未删除),则
Cookie
将添加到响应的Vary
标头中。#2288Flask.test_request_context
接受subdomain
和url_scheme
参数,以便在构建基本 URL 时使用。#1621默认情况下,将
APPLICATION_ROOT
设置为'/'
。当它设置为None
时,这已经是隐式默认值。默认情况下,在调试模式下启用
TRAP_BAD_REQUEST_ERRORS
。BadRequestKeyError
在调试模式下具有包含错误键的消息,而不是通用的错误请求消息。#2348允许使用
TaggedJSONSerializer
注册新标签,以支持在会话 cookie 中存储其他类型。#2352仅当请求尚未推送到上下文堆栈时才打开会话。这允许
stream_with_context
生成器访问包含视图使用的相同会话。#2354为测试客户端请求方法添加
json
关键字参数。这将把给定的对象转储为 JSON 并设置适当的内容类型。#2358将 JSON 处理提取到应用于
Request
和Response
类的 mixin 中。这为响应添加了Response.is_json
和Response.get_json
方法,使测试 JSON 响应更加容易。#2358删除了错误处理程序缓存,因为它为某些异常继承层次结构导致了意外的结果。如果想要避免遍历 MRO,请为每个异常显式注册处理程序。#2362
修复了对感知的非 UTC 日期时间进行不正确的 JSON 编码的问题。#2374
即使已访问
Flask.jinja_env
,模板自动重新加载也将遵循调试模式。#2373以下旧的已弃用代码已被删除。#2385
flask.ext
- 直接通过扩展名称导入扩展,而不是通过flask.ext
命名空间。例如,import flask.ext.sqlalchemy
变为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
。#2412flask
命令和Flask.run
将从.env
和.flaskenv
文件加载环境变量(如果已安装 python-dotenv)。#2416当将完整 URL 传递给测试客户端时,将使用 URL 中的 scheme,而不是
PREFERRED_URL_SCHEME
。#2430Flask.logger
已简化。LOGGER_NAME
和LOGGER_HANDLER_POLICY
配置已被删除。记录器始终命名为flask.app
。级别仅在首次访问时设置,它不会每次都检查Flask.debug
。仅使用一种格式,而不是根据Flask.debug
使用不同的格式。不会删除任何处理程序,并且仅当尚未配置任何处理程序时才添加处理程序。#2436蓝图视图函数名称可能不包含点。#2450
修复了由某些情况下的无效
Range
请求引起的ValueError
。#2526开发服务器默认使用线程。#2529
使用
silent=True
加载配置文件将忽略ENOTDIR
错误。#2581将
--cert
和--key
选项传递给flask run
以通过 HTTPS 运行开发服务器。#2606添加了
SESSION_COOKIE_SAMESITE
以控制会话 cookie 上的SameSite
属性。#2607添加了
Flask.test_cli_runner
以创建一个 Click runner,它可以调用 Flask CLI 命令进行测试。#2636子域名匹配默认禁用,设置
SERVER_NAME
不会隐式启用它。可以通过将subdomain_matching=True
传递给Flask
构造函数来启用它。#2635当蓝图注册到应用程序时,会从蓝图
url_prefix
中剥离单个尾部斜杠。#2629当
silent
为 true 时,Request.get_json
不会缓存解析失败的结果。#2651Request.get_json
不再接受任意编码。传入的 JSON 应根据 RFC 8259 使用 UTF-8 编码,但 Flask 将自动检测 UTF-8、-16 或 -32。#2691添加了
MAX_COOKIE_SIZE
和Response.max_cookie_size
以控制 Werkzeug 何时警告浏览器可能忽略的大 cookies。#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
修复了 Windows 上
safe_join
中的错误。
版本 0.12.1¶
发布于 2017-03-31
版本 0.12¶
发布于 2016-12-21,代号 Punsch
cli 命令现在响应
--version
。已删除
send_file
中类文件对象的文件类型猜测和 ETag 生成。#104, :pr`1849`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
的支持。这在旧浏览器中引入了安全风险。添加了 before_render_template 信号。
为
Flask.test_client
添加了**kwargs
,以支持将额外的关键字参数传递给Flask.test_client_class
的构造函数。添加了
SESSION_REFRESH_EACH_REQUEST
配置键,用于控制 set-cookie 行为。如果设置为True
,则永久会话将在每次请求时刷新并延长其生命周期;如果设置为False
,则仅当会话实际修改时才会修改。非永久会话不受此影响,并且总是在浏览器窗口关闭时过期。使 Flask 支持传入数据的自定义 JSON mimetype。
添加了对从视图函数返回
(response, headers)
形式的元组的支持。添加了
Config.from_json
。添加了
Flask.config_class
。添加了
Config.get_namespace
。模板不再在调试模式之外自动重新加载。这可以使用新的
TEMPLATES_AUTO_RELOAD
配置键进行配置。为 Python 3.3 的命名空间加载器中的限制添加了解决方法。
在使用 Python 3.3 的命名空间包时,添加了对显式根路径的支持。
添加了
flask
和flask.cli
模块,以通过 click CLI 系统启动本地调试服务器。建议使用此方法代替旧的flask.run()
方法,因为它由于不同的设计而工作更快、更可靠,并且还取代了Flask-Script
。现在首先检查与特定类匹配的错误处理程序,从而允许捕获作为 HTTP 异常子类的异常(在
werkzeug.exceptions
中)。这使扩展作者可以创建默认情况下会导致他们选择的 HTTP 错误的异常,但如果需要,可以使用自定义错误处理程序捕获它们。添加了
Config.from_mapping
。即使禁用调试,Flask 现在也会默认记录日志。日志格式现在是硬编码的,但可以通过
LOGGER_HANDLER_POLICY
配置键禁用默认日志处理。删除了已弃用的模块功能。
添加了
EXPLAIN_TEMPLATE_LOADING
配置标志,启用后,它将指示 Flask 解释它是如何定位模板的。这应该有助于用户在加载错误的模板时进行调试。强制执行蓝图处理,按照它们为模板加载注册的顺序。
将测试套件移植到 py.test。
弃用了
request.json
,推荐使用request.get_json()
。在 jsonify() 方法中添加了 “pretty” 和 “compressed” 分隔符定义。当
JSONIFY_PRETTYPRINT_REGULAR=False
时,通过删除默认情况下在分隔符后包含的不必要的空格来减小 JSON 响应大小。JSON 响应现在以换行符结尾,因为这是 UNIX 文本文件以换行符结尾的约定,并且某些客户端在缺少此换行符时处理不佳。#1262
如果用户使用小写版本
options
注册了覆盖规则,则自动提供的OPTIONS
方法现在已正确禁用。#1288flask.json.jsonify
现在支持datetime.date
类型。#1326不要将已捕获异常的异常信息泄漏到上下文拆卸处理程序。#1393
允许自定义 Jinja 环境子类。#1422
更新了扩展开发指南。
flask.g
现在具有pop()
和setdefault
方法。默认情况下为
flask.templating.render_template_string
启用自动转义。#1515flask.ext
现在已弃用。#1484如果服务器操作系统上的文件名无效,
send_from_directory
现在会引发 BadRequest。#1763添加了
JSONIFY_MIMETYPE
配置变量。#1728拆卸处理期间的异常将不再留下不良的应用程序上下文。
修复了损坏的
test_appcontext_signals()
测试用例。在
helpers.find_package
中引发AttributeError
异常,并附带一条有用的消息,解释了当使用 PEP 302 导入钩子但没有is_package()
方法时,为什么会引发此异常。修复了在进入请求或应用上下文之前引发的异常会被传递给 teardown 处理程序的问题。
修复了当请求绝对 URL 时,查询参数从测试客户端的请求中移除的问题。
将
@before_first_request
改为预期中的装饰器。修复了发送带有文件名的文件流时的 etags 错误。
修复了
send_from_directory
未正确扩展到应用程序根路径的问题。更改了首次请求前处理程序的逻辑,以便在调用后翻转标志。这将允许一些可能危险但可能应该允许的用法。
修复了 Python 3 错误,即当
app.url_build_error_handlers
中的处理程序重新引发BuildError
时。
版本 0.10.1¶
发布于 2013-06-14
修复了
|tojson
未引用单引号的问题,这使得过滤器在 HTML 属性中无法正常工作。现在可以在单引号属性中使用该过滤器。这应该使将该过滤器与 angular.js 一起使用更容易。重新为会话系统添加了对字节字符串的支持。这打破了与人们将二进制数据用于令牌验证放入会话中的常见情况的兼容性。
修复了为同一端点注册相同方法两次会错误地触发异常的问题。
版本 0.10¶
发布于 2013-06-13,代号 Limoncello
将默认 cookie 序列化格式从 pickle 更改为 JSON,以限制攻击者在密钥泄露时可能造成的影响。
除了已有的
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
对象将不可用,并且蓝图的上下文处理器不会被调用。配置对象现在作为真正的全局变量而不是通过上下文处理器提供给模板,这使得它即使在导入的模板中也默认可用。
添加了一个选项来生成非 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
现在也作为代理添加到模板上下文中,这使得它们在导入的模板中可用。但是,必须非常小心地使用它们,因为在宏之外使用可能会导致缓存。如果代理异常被传递,Flask 将不再调用错误的错误处理程序。
为 chrome 在 localhost 中使用域名时 cookie 无法按预期工作添加了解决方法。
更改了从会话中选择 cookie 值的默认值的逻辑,以更好地与 Google Chrome 配合使用。
添加了
message_flashed
信号,简化了闪现消息的测试。添加了对复制请求上下文的支持,以便更好地与 greenlets 协同工作。
删除了自定义 JSON HTTP 异常子类。如果您依赖它们,您可以自己重新引入它们。但是,强烈建议不要使用它们,因为接口存在缺陷。
Python 要求已更改:现在需要 Python 2.6 或 2.7 以准备 Python 3.3 端口。
更改了 teardown 系统如何被告知异常的方式。如果在错误处理过程中间发生异常处理,现在这种方式更可靠。
调试模式下的请求上下文保留现在保留了异常信息,这意味着 teardown 处理程序能够区分错误情况和成功情况。
添加了
JSONIFY_PRETTYPRINT_REGULAR
配置变量。Flask 现在默认按顺序排列 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 环境和请求对象之间的循环依赖关系。这意味着在响应返回到 WSGI 服务器后,environ
werkzeug.request
将为None
,但这具有以下优势:除非用户自己创建了循环依赖关系,否则在 CPython 上不需要垃圾回收器来拆除请求。会话现在在回调后存储,以便如果会话有效负载存储在会话中,您仍然可以在请求后回调中修改它。
Flask
类将避免导入提供的导入名称(必需的第一个参数),以使程序化构建 Flask 实例的工具受益。Flask
类将回退到在具有自定义模块钩子的系统(例如 Google App Engine)上使用导入,或者当导入名称位于 Python 2.7 之前的 zip 存档(通常是 egg)中时。蓝图现在有一个装饰器来添加应用程序范围的自定义模板过滤器,
Blueprint.app_template_filter
。Flask 和蓝图类现在有一个非装饰器方法来添加应用程序范围的自定义模板过滤器,
Flask.add_template_filter
和Blueprint.add_app_template_filter
。get_flashed_messages
函数现在允许通过category_filter
参数在单独的块中渲染闪现消息类别。Flask.run
方法现在接受host
和port
参数的None
,当None
时使用默认值。这允许使用配置值调用 run,例如app.run(app.config.get('MYHOST'), app.config.get('MYPORT'))
,无论是否提供配置文件,都具有正确的行为。render_template
方法现在接受模板名称的可迭代对象或单个模板名称。以前,它只接受单个模板名称。在可迭代对象上,渲染找到的第一个模板。添加了
Flask.app_context
,它的工作方式与请求上下文非常相似,但仅提供对当前应用程序的访问。这还增加了在没有活动请求上下文的情况下生成 URL 的支持。视图函数现在可以返回一个元组,其中第一个实例是
Response
的实例。这允许从视图函数返回jsonify(error="error msg"), 400
。Flask
和Blueprint
现在提供get_send_file_max_age
钩子,供子类覆盖使用Flask.send_static_file
(用于默认静态文件处理程序)和helpers.send_file
时从 Flask 提供静态文件的行为。此钩子提供了一个文件名,例如,允许按文件扩展名更改缓存控制。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
模块在 Python 2.5 上无法正常工作的问题。不应使用它,但确实给软件包管理器带来了一些问题。
版本 0.8¶
发布于 2011-09-29,代号 Rakija
将会话支持重构为会话接口,以便可以更改会话的实现,而无需覆盖 Flask 类。
现在可以正确自动删除空会话 cookie。
视图函数现在可以选择不获取自动 OPTIONS 实现。
现在可以捕获 HTTP 异常和错误请求错误,以便它们在回溯中正常显示。
调试模式下的 Flask 现在检测到一些常见问题,并尝试警告您。
如果在处理第一个请求后附加了视图,调试模式下的 Flask 现在会发出断言错误。当用户忘记提前导入视图代码时,这会提供更早的反馈。
添加了注册回调的能力,这些回调仅在第一个请求开始时触发一次,使用
Flask.before_first_request
。格式错误的 JSON 数据现在将触发错误请求 HTTP 异常,而不是通常会导致 500 内部服务器错误的 value error(如果未处理)。这是一个向后不兼容的更改。
应用程序现在不仅有一个资源和模块所在的根路径,还有一个实例路径,它是放置在运行时修改的文件(上传等)的指定位置。此外,这在概念上仅依赖于实例,并且在版本控制之外,因此它是放置配置文件等的理想位置。
添加了
APPLICATION_ROOT
配置变量。实现了
TestClient.session_transaction
,以便从测试环境中轻松修改会话。在内部重构了测试客户端。
APPLICATION_ROOT
配置变量以及SERVER_NAME
现在被测试客户端正确用作默认值。添加了
View.decorators
以支持更简单地装饰可插拔(基于类)的视图。修复了与“with”语句一起使用时,测试客户端未触发 teardown 处理程序执行的问题。
添加了对会话 cookie 参数的更精细控制。
如果未实现处理程序,则对方法视图的 HEAD 请求现在会自动调度到
get
方法。实现了虚拟
flask.ext
包以从中导入扩展。异常时的上下文保留现在是 Flask 本身的组成部分,不再是测试客户端的一部分。这清理了一些内部逻辑,并降低了单元测试中失控请求上下文的几率。
修复了 Jinja2 环境的
list_templates
方法在涉及蓝图或模块时未返回正确名称的问题。
版本 0.7.2¶
发布于 2011-07-06
修复了 URL 处理器在蓝图上无法正常工作的问题。
版本 0.7.1¶
发布于 2011-06-29
添加了丢失的 future 导入,该导入破坏了 2.5 兼容性。
修复了蓝图的无限重定向问题。
版本 0.7¶
发布于 2011-06-28,代号 Grappa
添加了
Flask.make_default_options_response
,子类可以使用它来更改OPTIONS
响应的默认行为。未绑定的局部变量现在引发正确的
RuntimeError
,而不是AttributeError
。基于文件对象猜测 mimetype 和 etag 支持在
send_file
中已被弃用,因为它不可靠。请传递文件名,或者附加您自己的 etag 并手动提供正确的 mimetype。模块的静态文件处理现在需要显式提供静态文件夹的名称。以前的自动检测不可靠,并且在 Google 的 App Engine 上引起了问题。在 1.0 之前,旧的行为将继续工作,但会发出依赖项警告。
修复了 Flask 在 jython 上运行的问题。
添加了
PROPAGATE_EXCEPTIONS
配置变量,该变量可用于翻转异常传播的设置,以前该设置仅链接到DEBUG
,现在链接到DEBUG
或TESTING
。Flask 不再在内部依赖于通过
add_url_rule
函数添加的规则,现在还可以接受添加到 url map 的常规 werkzeug 规则。向 flask 应用程序对象添加了
endpoint
方法,该方法允许使用装饰器向任意端点注册回调。静态文件发送使用 Last-Modified 而不是 0.6 中错误引入的 Date。
添加了
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
处理程序现在能够中止带有错误的请求。可以定义用户异常处理程序。这样,您可以为请求处理期间可能发生的某些错误(例如数据库连接错误、来自远程资源的超时等)从中央枢纽提供自定义错误消息。
蓝图可以提供蓝图特定的错误处理程序。
实现了通用基于类的视图。
版本 0.6.1¶
发布于 2010-12-31
修复了默认
OPTIONS
响应未在Allow
标头中公开所有有效方法的问题。Jinja2 模板加载语法现在允许在模板加载路径前面使用“./”。以前,这导致了模块设置的问题。
修复了模块的子域设置被静态文件夹忽略的问题。
修复了一个安全问题,该问题允许客户端下载任意文件,如果主机服务器是基于 Windows 的操作系统,并且客户端使用反斜杠来转义文件公开的目录。
版本 0.6¶
发布于 2010-07-27,代号 Whisky
请求后函数现在以注册的相反顺序调用。
除非应用程序显式添加“OPTIONS”作为 URL 规则的方法,否则 Flask 现在会自动实现 OPTIONS。在这种情况下,不会启动自动 OPTIONS 处理。
即使模块没有静态文件夹,静态规则现在也已就位。实施此功能是为了帮助 GAE,如果静态文件夹是 .yml 文件中映射的一部分,则 GAE 将删除静态文件夹。
Flask.config
现在在模板中作为config
可用。上下文处理器将不再覆盖直接传递给渲染函数的值。
添加了使用新的
MAX_CONTENT_LENGTH
配置值限制传入请求数据的能力。Module.add_url_rule
方法的端点现在是可选的,以便与应用程序对象上同名函数保持一致。添加了
make_response
函数,该函数简化了在视图中创建响应对象实例的过程。添加了基于 blinker 的信号支持。此功能当前是可选的,应该由扩展程序和应用程序使用。如果要使用它,请确保已安装
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
标签更改此行为。在内部重构了 Flask。现在它由多个文件组成。
send_file
现在发出 etag,并具有内置执行条件响应的能力。(暂时)放弃了对压缩应用程序的支持。这是一个很少使用的功能,并导致了一些令人困惑的行为。
添加了对每个包的模板和静态文件目录的支持。
删除了对
create_jinja_loader
的支持,由于改进的模块支持,该支持在 0.5 中不再使用。添加了一个帮助程序函数,用于从任何目录公开文件。
版本 0.4¶
发布于 2010-06-18,代号 Rakia
添加了从模块注册应用程序范围的错误处理程序的功能。
如果请求因异常而终止并且错误处理页面启动,则
Flask.after_request
处理程序现在也会被调用。测试客户端没有能力将请求上下文保留更长时间。这也可以用于触发不弹出请求堆栈以进行测试的自定义请求。
由于 Python 标准库缓存记录器,因此现在可以配置记录器的名称,以更好地支持单元测试。
添加了可以激活单元测试帮助程序的
TESTING
开关。如果启用了调试,则记录器现在切换到
DEBUG
模式。
版本 0.3.1¶
发布于 2010-05-28
修复了
Config.from_envvar
的错误报告错误。删除了一些未使用的代码。
版本不再包含开发遗留文件(主题的 .git 文件夹、zip 和 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
首次公开预览版。