变化¶
版本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_decoderAPP和蓝图上的属性,以及相应的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_filecan usetext=Falseto indicate that the parser wants a binary file instead. #4989如果使用空名称创建蓝图,则会引发
ValueError。 #5010SESSION_COOKIE_DOMAINdoes 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 aboutlocalhostand 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_forwill callapp.url_for. #4568flask.abortwill callapp.aborter.Flask.aborter_classandFlask.make_abortercan be used to customize this aborter. #4567flask.redirectwill callapp.redirect. #4569flask.jsonis an instance ofJSONProvider. A different provider can be set to use a different JSON library.flask.jsonifywill callapp.json.response, other functions inflask.jsonwill 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_dumpsandjson.htmlsafe_dumpare deprecated, the function is built-in to Jinja now. #4692重构
register_error_handler以合并错误检查。重写一些错误消息以使其更加一致。 #4559使用蓝图修饰器和注册蓝图后打算设置的功能将显示警告。在下一个版本中,这将变成一个错误,就像应用程序设置方法一样。 #4571
before_first_requestis deprecated. Run setup code when creating the application instead. #4605添加了
View.init_every_request类属性。如果视图子类将其设置为False,则该视图不会针对每个请求创建新实例。 #2520 。A
flask.cli.FlaskGroup单击组可以作为子命令嵌套在自定义CLI中。 #3263增列
--app和--debug选项添加到flaskCLI,而不是要求通过环境变量设置它们。 #2836增列
--env-file选项添加到flaskCLI。这样除了可以指定要加载的dotenv文件外,还可以指定.env和.flaskenv。 #3108不再需要在上修饰自定义CLI命令
app.cli或blueprint.cli使用@with_appcontext,应用程序上下文将在该点上处于活动状态。 #2410SessionInterface.get_expiration_timeuses 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_contextcan decorate async functions. #4303CLI使用
importlib.metadata而不是pkg_resources要加载命令输入点,请执行以下操作。 #4419覆盖
FlaskClient.open不会在重定向时导致错误。 #3396添加一个
--exclude-patterns选项添加到flask runCLI命令指定将被重新加载程序忽略的模式。 #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_encoderandjson_decoderare only passed todumpsandloadsif 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。 #4150jsonifyhandlesdecimal.Decimalby 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_blueprinttakes anameoption 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这个
encodingJSON函数的选项已弃用。 #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_fileraises aValueErrorwhen passed anioobject 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_fileandsend_from_directoryare wrappers around the implementations inwerkzeug.utils. #3828一些人
send_file参数已重命名,旧名称已弃用。attachment_filename已重命名为download_name。cache_timeout已重命名为max_age。add_etags已重命名为etag。 #3828, #3883send_filepassesdownload_nameeven ifas_attachment=Falseby usingContent-Disposition: inline. #3828send_filesetsconditional=Trueandmax_age=Noneby default.Cache-Controlis set tono-cacheifmax_ageis not set, otherwisepublic. This tells browsers to validate conditional requests instead of using a timed cache. #3828helpers.safe_joinis deprecated. Usewerkzeug.utils.safe_joininstead. #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 shellsets up tab and history completion like the defaultpythonshell ifreadlineis 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.loggertakes 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.copyincludes the current session object in the request context copy. This preventssessionpointing to an out-of-date object. #2935使用内置的RequestContext,主机报头中不可打印的Unicode字符将导致HTTP 400响应,而不是像以前那样产生HTTP 500。 #2994
send_filesupportsPathLikeobjects as described in PEP 519, to supportpathlibin Python 3. #3059send_filesupportsBytesIOpartial content. #2957open_resourceaccepts the "rt" file mode. This still does the same thing as "r". #3163这个
MethodView.methods基类中设置的属性由子类使用。 #3138Flask.jinja_optionsis adictinstead of anImmutableDictto 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也是。 #3124jsonifysupportsdataclassobjects. #3195允许自定义
Flask.url_map_class用于布线。 #3069开发服务器端口可以设置为0,这会告诉操作系统选择一个可用的端口。 #2926
的返回值
cli.load_dotenv与文档更加一致。它会回来的False如果没有安装python-dotenv,或者如果给定的路径不是文件。 #2937信令支持有一个存根,用于
connect_via在未安装Blinker库时调用。 #3208添加一个
--extra-files选项添加到flask runCLI命令指定将在更改时触发重新加载程序的额外文件。 #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_fileencodes 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 --versionoutputs Werkzeug's version and simplifies the Python version. #2825send_filehandles anattachment_filenamethat 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_matchingargument and sets it onFlask.url_map. #1559Flask.__init__accepts thestatic_hostargument and passes it as thehostargument when defining the static route. #1559send_filesupports Unicode inattachment_filename. #2223经过
_scheme论据来自url_for至Flask.handle_url_build_error。 #2017Flask.add_url_ruleaccepts theprovide_automatic_optionsargument to disable adding theOPTIONSmethod. #1489MethodViewsubclasses inherit method handlers from base classes. #1936在请求开始时打开会话时产生的错误由应用程序的错误处理程序处理。 #2254
获得蓝图
Blueprint.json_encoder和Blueprint.json_decoder重写应用程序的编码器和解码器的属性。 #1898Flask.make_responseraisesTypeErrorinstead ofValueErrorfor 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_DOMAINis set if it is detected throughSERVER_NAME. #2282自动检测零参数应用程序工厂名为
create_app或make_app从…FLASK_APP。 #2297工厂函数不需要使用
script_info参数来使用flask指挥部。如果它们接受单个参数或名为script_infovt.的.ScriptInfo对象将被传递。 #2319FLASK_APPcan be set to an app factory, with arguments if needed, for exampleFLASK_APP=myproject.app:create_app('dev'). #2326FLASK_APPcan point to local packages that are not installed in editable mode, althoughpip install -eis still preferred. #2414这个
View类属性View.provide_automatic_options设置在View.as_view,以供检测Flask.add_url_rule。 #2316错误处理将尝试注册的处理程序
blueprint, code,app, code,blueprint, exception,app, exception。 #2314Cookieis added to the response'sVaryheader if the session is accessed at all during the request (and not deleted). #2288Flask.test_request_contextacceptssubdomainandurl_schemearguments for use when building the base URL. #1621集
APPLICATION_ROOT至'/'默认情况下。当它设置为时,这已经是隐式缺省值None。TRAP_BAD_REQUEST_ERRORSis enabled by default in debug mode.BadRequestKeyErrorhas 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.sqlalchemyvbl.成为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.loggerhas been simplified.LOGGER_NAMEandLOGGER_HANDLER_POLICYconfig was removed. The logger is always namedflask.app. The level is only set on first access, it doesn't checkFlask.debugeach 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_jsondoesn't cache the result if parsing fails whensilentis true. #2651Request.get_jsonno 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.jsonifynow supports thedatetime.datetype. #1326不要将已捕获的异常的异常信息泄露给上下文拆卸处理程序。 #1393
允许自定义JJJA环境子类。 #1422
更新了扩展开发指南。
flask.g现在有了pop()和setdefault方法:研究方法。启用自动转义
flask.templating.render_template_string默认情况下。 #1515flask.extis now deprecated. #1484send_from_directorynow 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
首次公开发布预览版。