Fixes #3529 -- more explicit documentation about Context.update. Thanks for the patch, ggetzie.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@14689 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Chris Beaven 2010-11-24 00:36:36 +00:00
parent ff7c243b4c
commit 4c51986790
2 changed files with 17 additions and 1 deletions

View File

@ -74,7 +74,7 @@ class Context(BaseContext):
super(Context, self).__init__(dict_) super(Context, self).__init__(dict_)
def update(self, other_dict): def update(self, other_dict):
"Like dict.update(). Pushes an entire dictionary's keys and values onto the context." "Pushes other_dict to the stack of dictionaries in the Context"
if not hasattr(other_dict, '__getitem__'): if not hasattr(other_dict, '__getitem__'):
raise TypeError('other_dict must be a mapping (dictionary-like) object.') raise TypeError('other_dict must be a mapping (dictionary-like) object.')
self.dicts.append(other_dict) self.dicts.append(other_dict)

View File

@ -281,6 +281,22 @@ If you ``pop()`` too much, it'll raise
... ...
django.template.ContextPopException django.template.ContextPopException
In addition to ``push()`` and ``pop()``, the ``Context``
object also defines an ``update()`` method. This works like ``push()``
but takes a dictionary as an argument and pushes that dictionary onto
the stack instead of an empty one.
>>> c = Context()
>>> c['foo'] = 'first level'
>>> c.update({'foo': 'updated'})
{'foo': 'updated'}
>>> c['foo']
'updated'
>>> c.pop()
{'foo': 'updated'}
>>> c['foo']
'first level'
Using a ``Context`` as a stack comes in handy in some custom template tags, as Using a ``Context`` as a stack comes in handy in some custom template tags, as
you'll see below. you'll see below.