Commit 4ea1909d authored by Tim Heap's avatar Tim Heap Committed by Tim Graham
Browse files

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.
parent 48ddc662
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -60,4 +60,4 @@ class Template(object):
            context['request'] = request
            context['csrf_input'] = csrf_input_lazy(request)
            context['csrf_token'] = csrf_token_lazy(request)
        return self.template.render(**context)
        return self.template.render(context)
+18 −0
Original line number Diff line number Diff line
@@ -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!')