summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Hill <alex@hill.net.au>2013-12-19 13:42:32 +0800
committerBaptiste Mispelon <bmispelon@gmail.com>2013-12-20 01:02:50 +0100
commit832ab0dbaacf381d15445259f292d88175ff84f2 (patch)
tree20239d25f377753cdde47a4c612332dcbe340776
parent23d9f517dc3ca31816bb8596f5a59f1ae44304ee (diff)
Fixed #21639 -- Implemented RenderContext.__getitem__
It's now consistent with RenderContext.get.
-rw-r--r--django/template/context.py7
-rw-r--r--tests/template_tests/test_context.py15
2 files changed, 18 insertions, 4 deletions
diff --git a/django/template/context.py b/django/template/context.py
index ba2c3d4d07..7a5ad161d4 100644
--- a/django/template/context.py
+++ b/django/template/context.py
@@ -145,11 +145,10 @@ class RenderContext(BaseContext):
return key in self.dicts[-1]
def get(self, key, otherwise=None):
- d = self.dicts[-1]
- if key in d:
- return d[key]
- return otherwise
+ return self.dicts[-1].get(key, otherwise)
+ def __getitem__(self, key):
+ return self.dicts[-1][key]
# This is a function rather than module-level procedural code because we only
# want it to execute if somebody uses RequestContext.
diff --git a/tests/template_tests/test_context.py b/tests/template_tests/test_context.py
index 7bcfb7f9f2..bbf6918103 100644
--- a/tests/template_tests/test_context.py
+++ b/tests/template_tests/test_context.py
@@ -3,6 +3,7 @@
from unittest import TestCase
from django.template import Context, Variable, VariableDoesNotExist
+from django.template.context import RenderContext
class ContextTests(TestCase):
@@ -34,3 +35,17 @@ class ContextTests(TestCase):
self.assertRaises(VariableDoesNotExist,
Variable('new').resolve, empty_context)
self.assertEqual(Variable('new').resolve(Context({'new': 'foo'})), 'foo')
+
+ def test_render_context(self):
+ test_context = RenderContext({'fruit': 'papaya'})
+
+ # Test that push() limits access to the topmost dict
+ test_context.push()
+
+ test_context['vegetable'] = 'artichoke'
+ self.assertEqual(list(test_context), ['vegetable'])
+
+ self.assertNotIn('fruit', test_context)
+ with self.assertRaises(KeyError):
+ test_context['fruit']
+ self.assertIsNone(test_context.get('fruit'))