context is a python class and so u can sub class it and do any kind of operations with it done for classes. django defines a pre-defined context subclass: django.template.RequestContext RequestContext looks in your settings file for a setting called TEMPLATE_CONTEXT_PROCESSORS, which should be a tuple of callable objects, each of which should return a dictionary; RequestContext will loop over each one of them, call it, and add the key/value pairs from its returned dictionary to the template context as variables. Django includes a few built-in context processors (found in django.core.context_processors) which can add: The user who requested the page (django.core.context_processors.auth) A test for the DEBUG setting and a list of SQL executed in the request (django.core.context_processors.debug) Information about the language settings used for any translations performed by the internationalization system (django.core.context_processors.i18n) The full HttpRequest object for the current request (django.core.context_processors.request) Using RequestContext and a context processor automatically adds these variables in every template, which avoids the repetitiveness of having to call a template tag in each template just to add some variables.