mirror of https://github.com/pallets/flask.git
Updated documentation regarding the session transactions
This commit is contained in:
parent
311ac0f533
commit
1ea3d4ea53
|
@ -273,3 +273,35 @@ is no longer available (because you are trying to use it outside of the actual r
|
||||||
However, keep in mind that any :meth:`~flask.Flask.after_request` functions
|
However, keep in mind that any :meth:`~flask.Flask.after_request` functions
|
||||||
are already called at this point so your database connection and
|
are already called at this point so your database connection and
|
||||||
everything involved is probably already closed down.
|
everything involved is probably already closed down.
|
||||||
|
|
||||||
|
|
||||||
|
Accessing and Modifying Sessions
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
.. versionadded:: 0.8
|
||||||
|
|
||||||
|
Sometimes it can be very helpful to access or modify the sessions from the
|
||||||
|
test client. Generally there are two ways for this. Ify ou just want to
|
||||||
|
ensure that a session has certain keys set to certain values you can just
|
||||||
|
keep the context around and access :data:`flask.session`::
|
||||||
|
|
||||||
|
with app.test_client() as c:
|
||||||
|
rv = c.get('/')
|
||||||
|
assert flask.session['foo'] == 42
|
||||||
|
|
||||||
|
This however does not make it possible to also modify the session or to
|
||||||
|
access the session before a request was fired. Starting with Flask 0.8 we
|
||||||
|
provide a so called “session transaction” which simulates the appropriate
|
||||||
|
calls to open a session in the context of the test client and to modify
|
||||||
|
it. At the end of the transaction the session is stored. This works
|
||||||
|
independently of the session backend used::
|
||||||
|
|
||||||
|
with app.test_client() as c:
|
||||||
|
with c.session_transaction() as sess:
|
||||||
|
sess['a_key'] = 'a value'
|
||||||
|
|
||||||
|
# once this is reached the session was stored
|
||||||
|
|
||||||
|
Note that in this case you have to use the ``sess`` object instead of the
|
||||||
|
:data:`flask.session` proxy. The object however itself will provide the
|
||||||
|
same interface.
|
||||||
|
|
Loading…
Reference in New Issue