Commit 4c519867 authored by Chris Beaven's avatar Chris Beaven
Browse files

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
parent ff7c243b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -74,7 +74,7 @@ class Context(BaseContext):
        super(Context, self).__init__(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__'):
            raise TypeError('other_dict must be a mapping (dictionary-like) object.')
        self.dicts.append(other_dict)
+16 −0
Original line number Diff line number Diff line
@@ -281,6 +281,22 @@ If you ``pop()`` too much, it'll raise
    ...
    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
you'll see below.