From 4ea1909d3c420ba1fbdbf7221cad518d43aef885 Mon Sep 17 00:00:00 2001 From: Tim Heap Date: Tue, 31 Mar 2015 15:37:17 +1100 Subject: Fixed #24538 -- Allowed self in Jinja context Rendering a Jinja template with self in the context threw an error. While self is a reserved variable in Jinja, including self in the context is not an error, so Django should respect that. --- tests/template_backends/test_jinja2.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'tests') diff --git a/tests/template_backends/test_jinja2.py b/tests/template_backends/test_jinja2.py index 5f69669446..4c22c0958b 100644 --- a/tests/template_backends/test_jinja2.py +++ b/tests/template_backends/test_jinja2.py @@ -21,3 +21,21 @@ class Jinja2Tests(TemplateStringsTests): engine_class = Jinja2 backend_name = 'jinja2' options = {'keep_trailing_newline': True} + + def test_self_context(self): + """ + #24538 -- Using 'self' in the context should not throw errors + """ + engine = Jinja2({ + 'DIRS': [], + 'APP_DIRS': False, + 'NAME': 'django', + 'OPTIONS': {}, + }) + + # self will be overridden to be a TemplateReference, so the self + # variable will not come through. Attempting to use one though should + # not throw an error. + template = engine.from_string('hello {{ foo }}!') + content = template.render(context={'self': 'self', 'foo': 'world'}) + self.assertEqual(content, 'hello world!') -- cgit v1.3