diff options
Diffstat (limited to 'django')
| -rw-r--r-- | django/template/loader.py | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/django/template/loader.py b/django/template/loader.py index 279d8e86fe..e58dc3231d 100644 --- a/django/template/loader.py +++ b/django/template/loader.py @@ -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: - context_instance.update(dictionary) - else: - context_instance = Context(dictionary) - return t.render(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) + 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." |
