Fixed #21639 -- Implemented RenderContext.__getitem__
It's now consistent with RenderContext.get.
This commit is contained in:
parent
23d9f517dc
commit
832ab0dbaa
|
@ -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.
|
||||
|
|
|
@ -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'))
|
||||
|
|
Loading…
Reference in New Issue