Loading django/template/loader.py +9 −5 Original line number Diff line number Diff line Loading @@ -179,11 +179,15 @@ def render_to_string(template_name, dictionary=None, context_instance=None): t = select_template(template_name) else: t = get_template(template_name) if context_instance: if not context_instance: return t.render(Context(dictionary)) # Add the dictionary to the context stack, ensuring it gets removed again # to keep the context_instance in the same state it started in. context_instance.update(dictionary) else: context_instance = Context(dictionary) try: return t.render(context_instance) finally: context_instance.pop() def select_template(template_name_list): "Given a list of template names, returns the first that can be loaded." Loading tests/regressiontests/templates/loaders.py +25 −0 Original line number Diff line number Diff line Loading @@ -148,5 +148,30 @@ class CachedLoader(unittest.TestCase): # The two templates should not have the same content self.assertNotEqual(t1.render(Context({})), t2.render(Context({}))) class RenderToStringTest(unittest.TestCase): def setUp(self): self._old_TEMPLATE_DIRS = settings.TEMPLATE_DIRS settings.TEMPLATE_DIRS = ( os.path.join(os.path.dirname(__file__), 'templates'), ) def tearDown(self): settings.TEMPLATE_DIRS = self._old_TEMPLATE_DIRS def test_basic(self): self.assertEqual(loader.render_to_string('test_context.html'), 'obj:') def test_basic_context(self): self.assertEqual(loader.render_to_string('test_context.html', {'obj': 'test'}), 'obj:test') def test_existing_context_kept_clean(self): context = Context({'obj': 'before'}) output = loader.render_to_string('test_context.html', {'obj': 'after'}, context_instance=context) self.assertEqual(output, 'obj:after') self.assertEqual(context['obj'], 'before') if __name__ == "__main__": unittest.main() tests/regressiontests/templates/templates/test_context.html 0 → 100644 +1 −0 Original line number Diff line number Diff line obj:{{ obj }} No newline at end of file Loading
django/template/loader.py +9 −5 Original line number Diff line number Diff line Loading @@ -179,11 +179,15 @@ def render_to_string(template_name, dictionary=None, context_instance=None): t = select_template(template_name) else: t = get_template(template_name) if context_instance: if not context_instance: return t.render(Context(dictionary)) # Add the dictionary to the context stack, ensuring it gets removed again # to keep the context_instance in the same state it started in. context_instance.update(dictionary) else: context_instance = Context(dictionary) try: return t.render(context_instance) finally: context_instance.pop() def select_template(template_name_list): "Given a list of template names, returns the first that can be loaded." Loading
tests/regressiontests/templates/loaders.py +25 −0 Original line number Diff line number Diff line Loading @@ -148,5 +148,30 @@ class CachedLoader(unittest.TestCase): # The two templates should not have the same content self.assertNotEqual(t1.render(Context({})), t2.render(Context({}))) class RenderToStringTest(unittest.TestCase): def setUp(self): self._old_TEMPLATE_DIRS = settings.TEMPLATE_DIRS settings.TEMPLATE_DIRS = ( os.path.join(os.path.dirname(__file__), 'templates'), ) def tearDown(self): settings.TEMPLATE_DIRS = self._old_TEMPLATE_DIRS def test_basic(self): self.assertEqual(loader.render_to_string('test_context.html'), 'obj:') def test_basic_context(self): self.assertEqual(loader.render_to_string('test_context.html', {'obj': 'test'}), 'obj:test') def test_existing_context_kept_clean(self): context = Context({'obj': 'before'}) output = loader.render_to_string('test_context.html', {'obj': 'after'}, context_instance=context) self.assertEqual(output, 'obj:after') self.assertEqual(context['obj'], 'before') if __name__ == "__main__": unittest.main()
tests/regressiontests/templates/templates/test_context.html 0 → 100644 +1 −0 Original line number Diff line number Diff line obj:{{ obj }} No newline at end of file