Is there a list of default template variables in django?

Question:

I noticed that the django templates already have certain variables passed to it without you having to send any data. For instance, the ‘user’ variable can be called without sending any ‘user’ data to the template when rendering.

Is there somewhere where I can find a list of these ‘default variables’?

Asked By: Steven Rogers

||

Answers:

The TEMPLATE_CONTEXT_PROCESSORS setting contains the following values by default (in Django 1.6):

"django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.core.context_processors.tz",
"django.contrib.messages.context_processors.messages"

The above is a list of context processors. A context processor is a function which can add more variables to the context which is passed to each template.

For example, the variable user is added by "django.contrib.auth.context_processors.auth".

Answered By: Simeon Visser

Django comes with a special Context class, django.template.RequestContext, that acts slightly differently than the normal django.template.Context. The first difference is that it takes an HttpRequest as its first argument. Go through the docs for more clearer Idea.

https://docs.djangoproject.com/en/1.6/ref/templates/api/#subclassing-context-requestcontext

Answered By: Sarfraz Ahmad

Now in Django 4.1, the default context processors and template variables are listed at https://docs.djangoproject.com/en/4.1/ref/templates/api/#context-processors

Just for a quick reference:

Context Processor variables
django.contrib.auth.context_processors.auth user
perms
django.template.context_processors.debug debug
sql_queries
django.template.context_processors.i18n LANGUAGES
LANGUAGE_BIDI
LANGUAGE_CODE
django.template.context_processors.media MEDIA_URL
django.template.context_processors.static STATIC_URL
django.template.context_processors.csrf csrf_token
django.template.context_processors.request request
django.template.context_processors.tz TIME_ZONE
django.contrib.messages.context_processors.messages messages
DEFAULT_MESSAGE_LEVELS
Answered By: x0lani