summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorCurtis Maloney <curtis@tinbrain.net>2013-07-16 21:11:32 +1000
committerTim Graham <timograham@gmail.com>2013-07-17 13:32:32 -0400
commita3e7d73ed7d90d31de46c60d40424267f62e411c (patch)
treec14e422ce6b5e4669b059d5f5ef111322f5840a7 /docs
parent828359e52dd8f190a577442a88517e1ba9ba8da0 (diff)
Allowed Context.push to behave as a context mananger.
Thanks Loic Bistuer for the review.
Diffstat (limited to 'docs')
-rw-r--r--docs/ref/templates/api.txt25
-rw-r--r--docs/releases/1.7.txt7
2 files changed, 32 insertions, 0 deletions
diff --git a/docs/ref/templates/api.txt b/docs/ref/templates/api.txt
index 6a9efc0811..f7dd0121d1 100644
--- a/docs/ref/templates/api.txt
+++ b/docs/ref/templates/api.txt
@@ -325,6 +325,31 @@ If you ``pop()`` too much, it'll raise
...
django.template.ContextPopException
+.. versionadded:: 1.7
+
+You can also use ``push()`` as a context manager to ensure a matching ``pop()``
+is called.
+
+ >>> c = Context()
+ >>> c['foo'] = 'first level'
+ >>> with c.push():
+ >>> c['foo'] = 'second level'
+ >>> c['foo']
+ 'second level'
+ >>> c['foo']
+ 'first level'
+
+All arguments passed to ``push()`` will be passed to the ``dict`` constructor
+used to build the new context level.
+
+ >>> c = Context()
+ >>> c['foo'] = 'first level'
+ >>> with c.push(foo='second level'):
+ >>> c['foo']
+ 'second level'
+ >>> c['foo']
+ 'first level'
+
.. method:: update(other_dict)
In addition to ``push()`` and ``pop()``, the ``Context``
diff --git a/docs/releases/1.7.txt b/docs/releases/1.7.txt
index ae2a80d7a3..f551828455 100644
--- a/docs/releases/1.7.txt
+++ b/docs/releases/1.7.txt
@@ -60,6 +60,13 @@ Minor features
* :attr:`~django.db.models.Options.app_label` is no longer required for models
that are defined in a ``models`` package within an app.
+* The :meth:`Context.push() <django.template.Context.push>` method now returns
+ a context manager which automatically calls :meth:`pop()
+ <django.template.Context.pop>` upon exiting the ``with`` statement.
+ Additionally, :meth:`push() <django.template.Context.push>` now accepts
+ parameters that are passed to the ``dict`` constructor used to build the new
+ context level.
+
Backwards incompatible changes in 1.7
=====================================