π Unreleased
π Unreleased
.svg files. Inside
templates this behavior can be changed with the autoescape tag.
:issue:4831π Released 2022εΉ΄08ζ08ζ₯
4754app.env to be "production". This
attribute remains deprecated. :issue:4740π Released 2022εΉ΄08ζ03ζ₯
json_encoder or json_decoder raises a
deprecation warning. :issue:4732π Released 2022εΉ΄08ζ01ζ₯
π Remove previously deprecated code. :pr:4667
send_file parameters have been removed.
download_name replaces attachment_filename, max_age
replaces cache_timeout, and etag replaces add_etags.
Additionally, path replaces filename in
send_from_directory.RequestContext.g property returning AppContext.g is
removed.β‘οΈ Update Werkzeug dependency to >= 2.2.
The app and request contexts are managed using Python context vars
directly rather than Werkzeug's LocalStack. This should result
in better performance and memory use. :pr:4682
_app_ctx_stack.top
and _request_ctx_stack.top are deprecated. Store data on
g instead using a unique prefix, like
g._extension_name_attr.The FLASK_ENV environment variable and app.env attribute are
deprecated, removing the distinction between development and debug
mode. Debug mode should be controlled directly using the --debug
option or app.run(debug=True). :issue:4714
π Some attributes that proxied config keys on app are deprecated:
session_cookie_name, send_file_max_age_default,
use_x_sendfile, propagate_exceptions, and
templates_auto_reload. Use the relevant config keys instead.
:issue:4716
Add new customization points to the Flask app object for many
previously global behaviors.
flask.url_for will call app.url_for. :issue:4568flask.abort will call app.aborter.
Flask.aborter_class and Flask.make_aborter can be used
to customize this aborter. :issue:4567flask.redirect will call app.redirect. :issue:4569flask.json is an instance of JSONProvider. A different
provider can be set to use a different JSON library.
flask.jsonify will call app.json.response, other
functions in flask.json will call corresponding functions in
app.json. :pr:4692π§ JSON configuration is moved to attributes on the default
app.json provider. JSON_AS_ASCII, JSON_SORT_KEYS,
JSONIFY_MIMETYPE, and JSONIFY_PRETTYPRINT_REGULAR are
deprecated. :pr:4692
Setting custom json_encoder and json_decoder classes on the
app or a blueprint, and the corresponding json.JSONEncoder and
JSONDecoder classes, are deprecated. JSON behavior can now be
overridden using the app.json provider interface. :pr:4692
json.htmlsafe_dumps and json.htmlsafe_dump are deprecated,
the function is built-in to Jinja now. :pr:4692
Refactor register_error_handler to consolidate error checking.
Rewrite some error messages to be more consistent. :issue:4559
π¨ Use Blueprint decorators and functions intended for setup after
registering the blueprint will show a warning. In the next version,
this will become an error just like the application setup methods.
:issue:4571
before_first_request is deprecated. Run setup code when creating
the application instead. :issue:4605
Added the View.init_every_request class attribute. If a view
subclass sets this to False, the view will not create a new
instance on every request. :issue:2520.
A flask.cli.FlaskGroup Click group can be nested as a
sub-command in a custom CLI. :issue:3263
Add --app and --debug options to the flask CLI, instead
of requiring that they are set through environment variables.
:issue:2836
Add --env-file option to the flask CLI. This allows
specifying a dotenv file to load in addition to .env and
.flaskenv. :issue:3108
It is no longer required to decorate custom CLI commands on
app.cli or blueprint.cli with @with_appcontext, an app
context will already be active at that point. :issue:2410
SessionInterface.get_expiration_time uses a timezone-aware
value. :pr:4645
View functions can return generators directly instead of wrapping
them in a Response. :pr:4629
Add stream_template and stream_template_string functions to
render a template as a stream of pieces. :pr:4629
A new implementation of context preservation during debugging and
testing. :pr:4666
request, g, and other context-locals point to the
correct data when running code in the interactive debugger
console. :issue:2836stream_with_context preserves context separately from a
with client block. It will be cleaned up when
response.get_data() or response.close() is called.Allow returning a list from a view function, to convert it to a
JSON response like a dict is. :issue:4672
When type checking, allow TypedDict to be returned from view
functions. :pr:4695
π Remove the --eager-loading/--lazy-loading options from the
flask run command. The app is always eager loaded the first
time, then lazily loaded in the reloader. The reloader always prints
errors immediately but continues serving. Remove the internal
DispatchingApp middleware used by the previous implementation.
:issue:4715
π Released 2022εΉ΄07ζ13ζ₯
4606after_request functions. :issue:4600instance_path for namespace packages uses the path closest to
the imported submodule. :issue:4610render_template and
render_template_string are used outside an application context.
:pr:4693π Released 2022εΉ΄04ζ28ζ₯
json.loads, it accepts str or bytes.
:issue:4519--cert and --key options on flask run can be given
in either order. :issue:4459π Released on 2022εΉ΄03ζ30ζ₯
4502π Released 2022εΉ΄03ζ28ζ₯
43354008π Remove previously deprecated code. :pr:4337
script_info to app factory functions.config.from_json is replaced by
config.from_file(name, load=json.load).json functions no longer take an encoding parameter.safe_join is removed, use werkzeug.utils.safe_join
instead.total_seconds is removed, use timedelta.total_seconds
instead.name= when registering to specify a unique name.as_tuple parameter is removed. Use
response.request.environ instead. :pr:4417Some parameters in send_file and send_from_directory were
renamed in 2.0. The deprecation period for the old names is extended
to 2.2. Be sure to test with deprecation warnings visible.
attachment_filename is renamed to download_name.cache_timeout is renamed to max_age.add_etags is renamed to etag.filename is renamed to path.π The RequestContext.g property is deprecated. Use g directly
or AppContext.g instead. :issue:3898
copy_current_request_context can decorate async functions.
:pr:4303
π The CLI uses importlib.metadata instead of setuptools to
load command entry points. :issue:4419
Overriding FlaskClient.open will not cause an error on redirect.
:issue:3396
Add an --exclude-patterns option to the flask run CLI
command to specify patterns that will be ignored by the reloader.
:issue:4188
0οΈβ£ When using lazy loading (the default with the debugger), the Click
context from the flask run command remains available in the
loader thread. :issue:4460
Deleting the session cookie uses the httponly flag.
:issue:4485
Relax typing for errorhandler to allow the user to use more
precise types and decorate the same function multiple times.
:issue:4095, 4295, 4297
Fix typing for __exit__ methods for better compatibility with
ExitStack. :issue:4474
From Werkzeug, for redirect responses the Location header URL
will remain relative, and exclude the scheme and domain, by default.
:pr:4496
π Add Config.from_prefixed_env() to load config values from
environment variables that start with FLASK_ or another prefix.
This parses values as JSON by default, and allows setting keys in
nested dicts. :pr:4479
π Released 2022εΉ΄02ζ14ζ₯
as_tuple parameter is deprecated and will be
removed in Werkzeug 2.1. It is now also deprecated in Flask, to be
removed in Flask 2.1, while remaining compatible with both in
2.0.x. Use response.request.environ instead. :pr:4341errorhandler decorator. :issue:4295ImportError
tracebacks when importing the application. :issue:4307app.json_encoder and json_decoder are only passed to
dumps and loads if they have custom behavior. This improves
performance, mainly on PyPy. :issue:4349after_this_request is used outside a
request context. :issue:4333