forked from orbit-oss/flask
More documentation updates
This commit is contained in:
parent
a9fc040c39
commit
115d31ddbf
3 changed files with 53 additions and 1 deletions
5
CHANGES
5
CHANGES
|
|
@ -38,13 +38,16 @@ Release date to be announced, codename to be selected
|
||||||
- Added `create_jinja_loader` to override the loader creation process.
|
- Added `create_jinja_loader` to override the loader creation process.
|
||||||
- Implemented a silent flag for `config.from_pyfile`.
|
- Implemented a silent flag for `config.from_pyfile`.
|
||||||
- Added `teardown_request` decorator, for functions that should run at the end
|
- Added `teardown_request` decorator, for functions that should run at the end
|
||||||
of a request regardless of whether an exception occurred.
|
of a request regardless of whether an exception occurred. Also the behavior
|
||||||
|
for `after_request` was changed. It's now no longer executed when an exception
|
||||||
|
is raised. See :ref:`upgrading-to-new-teardown-handling`
|
||||||
- Implemented :func:`flask.has_request_context`
|
- Implemented :func:`flask.has_request_context`
|
||||||
- Added :func:`safe_join`
|
- Added :func:`safe_join`
|
||||||
- The automatic JSON request data unpacking now looks at the charset
|
- The automatic JSON request data unpacking now looks at the charset
|
||||||
mimetype parameter.
|
mimetype parameter.
|
||||||
- Don't modify the session on :func:`flask.get_flashed_messages` if there
|
- Don't modify the session on :func:`flask.get_flashed_messages` if there
|
||||||
are no messages in the session.
|
are no messages in the session.
|
||||||
|
- `before_request` handlers are now able to abort requests with errors.
|
||||||
|
|
||||||
Version 0.6.1
|
Version 0.6.1
|
||||||
-------------
|
-------------
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,11 @@ installation, make sure to pass it the ``-U`` parameter::
|
||||||
Version 0.7
|
Version 0.7
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
|
The following backwards incompatible changes exist from 0.6 to 0.7
|
||||||
|
|
||||||
|
Bug in Request Locals
|
||||||
|
`````````````````````
|
||||||
|
|
||||||
Due to a bug in earlier implementations the request local proxies now
|
Due to a bug in earlier implementations the request local proxies now
|
||||||
raise a :exc:`RuntimeError` instead of an :exc:`AttributeError` when they
|
raise a :exc:`RuntimeError` instead of an :exc:`AttributeError` when they
|
||||||
are unbound. If you caught these exceptions with :exc:`AttributeError`
|
are unbound. If you caught these exceptions with :exc:`AttributeError`
|
||||||
|
|
@ -44,6 +49,48 @@ New code::
|
||||||
|
|
||||||
return send_file(my_file_object, add_etags=False)
|
return send_file(my_file_object, add_etags=False)
|
||||||
|
|
||||||
|
.. _upgrading-to-new-teardown-handling:
|
||||||
|
|
||||||
|
Upgrading to new Teardown Handling
|
||||||
|
``````````````````````````````````
|
||||||
|
|
||||||
|
We streamlined the behavior of the callbacks for request handling. For
|
||||||
|
things that modify the response the :meth:`~flask.Flask.after_request`
|
||||||
|
decorators continue to work as expected, but for things that absolutely
|
||||||
|
must happen at the end of request we introduced the new
|
||||||
|
:meth:`~flask.Flask.teardown_request` decorator. Unfortunately that
|
||||||
|
change also made after-request work differently under error conditions.
|
||||||
|
It's not consistently skipped if exceptions happen whereas previously it
|
||||||
|
might have been called twice to ensure it is executed at the end of the
|
||||||
|
request.
|
||||||
|
|
||||||
|
If you have database connection code that looks like this::
|
||||||
|
|
||||||
|
@app.after_request
|
||||||
|
def after_request(response):
|
||||||
|
g.db.close()
|
||||||
|
return response
|
||||||
|
|
||||||
|
You are now encouraged to use this instead::
|
||||||
|
|
||||||
|
@app.teardown_request
|
||||||
|
def after_request(exception):
|
||||||
|
g.db.close()
|
||||||
|
|
||||||
|
On the upside this change greatly improves the internal code flow and
|
||||||
|
makes it easier to customize the dispatching and error handling. This
|
||||||
|
makes it now a lot easier to write unit tests as you can prevent closing
|
||||||
|
down of database connections for a while. You can take advantage of the
|
||||||
|
fact that the teardown callbacks are called when the response context is
|
||||||
|
removed from the stack so a test can query the database after request
|
||||||
|
handling::
|
||||||
|
|
||||||
|
with app.test_client() as client:
|
||||||
|
resp = client.get('/')
|
||||||
|
# g.db is still bound if there is such a thing
|
||||||
|
|
||||||
|
# and here it's gone
|
||||||
|
|
||||||
Version 0.6
|
Version 0.6
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -831,6 +831,8 @@ class Flask(_PackageBoundObject):
|
||||||
"""Dispatches the request and on top of that performs request
|
"""Dispatches the request and on top of that performs request
|
||||||
pre and postprocessing as well as HTTP exception catching and
|
pre and postprocessing as well as HTTP exception catching and
|
||||||
error handling.
|
error handling.
|
||||||
|
|
||||||
|
.. versionadded:: 0.7
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
request_started.send(self)
|
request_started.send(self)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue