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’?
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"
.
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
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
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’?
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"
.
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
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 |