Loading django/template/context.py +7 −0 Original line number Diff line number Diff line Loading @@ -89,6 +89,13 @@ class BaseContext(object): return d[key] return otherwise def setdefault(self, key, default=None): try: return self[key] except KeyError: self[key] = default return default def new(self, values=None): """ Returns a new context with the same properties, but with only the Loading docs/ref/templates/api.txt +7 −0 Original line number Diff line number Diff line Loading @@ -420,6 +420,13 @@ dictionary syntax:: Returns the value for ``key`` if ``key`` is in the context, else returns ``otherwise``. .. method:: Context.setdefault(key, default=None) .. versionadded:: 1.9 If ``key`` is in the context, returns its value. Otherwise inserts ``key`` with a value of ``default`` and returns ``default``. .. method:: Context.pop() .. method:: Context.push() .. exception:: ContextPopException Loading docs/releases/1.9.txt +3 −0 Original line number Diff line number Diff line Loading @@ -166,6 +166,9 @@ Templates helper can now store results in a template variable by using the ``as`` argument. * Added a :meth:`Context.setdefault() <django.template.Context.setdefault>` method. Requests and Responses ^^^^^^^^^^^^^^^^^^^^^^ Loading tests/template_tests/test_context.py +11 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,17 @@ class ContextTests(SimpleTestCase): self.assertEqual(c['a'], 3) self.assertEqual(c['a'], 1) def test_setdefault(self): c = Context() x = c.setdefault('x', 42) self.assertEqual(x, 42) self.assertEqual(c['x'], 42) x = c.setdefault('x', 100) self.assertEqual(x, 42) self.assertEqual(c['x'], 42) def test_resolve_on_context_method(self): """ #17778 -- Variable shouldn't resolve RequestContext methods Loading Loading
django/template/context.py +7 −0 Original line number Diff line number Diff line Loading @@ -89,6 +89,13 @@ class BaseContext(object): return d[key] return otherwise def setdefault(self, key, default=None): try: return self[key] except KeyError: self[key] = default return default def new(self, values=None): """ Returns a new context with the same properties, but with only the Loading
docs/ref/templates/api.txt +7 −0 Original line number Diff line number Diff line Loading @@ -420,6 +420,13 @@ dictionary syntax:: Returns the value for ``key`` if ``key`` is in the context, else returns ``otherwise``. .. method:: Context.setdefault(key, default=None) .. versionadded:: 1.9 If ``key`` is in the context, returns its value. Otherwise inserts ``key`` with a value of ``default`` and returns ``default``. .. method:: Context.pop() .. method:: Context.push() .. exception:: ContextPopException Loading
docs/releases/1.9.txt +3 −0 Original line number Diff line number Diff line Loading @@ -166,6 +166,9 @@ Templates helper can now store results in a template variable by using the ``as`` argument. * Added a :meth:`Context.setdefault() <django.template.Context.setdefault>` method. Requests and Responses ^^^^^^^^^^^^^^^^^^^^^^ Loading
tests/template_tests/test_context.py +11 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,17 @@ class ContextTests(SimpleTestCase): self.assertEqual(c['a'], 3) self.assertEqual(c['a'], 1) def test_setdefault(self): c = Context() x = c.setdefault('x', 42) self.assertEqual(x, 42) self.assertEqual(c['x'], 42) x = c.setdefault('x', 100) self.assertEqual(x, 42) self.assertEqual(c['x'], 42) def test_resolve_on_context_method(self): """ #17778 -- Variable shouldn't resolve RequestContext methods Loading