Context Processors
Context processors are functions that add variables to every template's context automatically. Instead of passing the same data (like site name or user cart) in every view, a context processor does it once globally.
15 min•By Priygop Team•Updated 2026
How Context Processors Work
- A context processor is a function that takes request, returns a dict
- The returned dict is merged into every template's context
- Built-in: django.contrib.auth.context_processors.auth (adds user)
- Built-in: django.template.context_processors.request (adds request)
- Custom: Add site-wide data like settings, menus, notifications
- Register in settings.py TEMPLATES context_processors list
- Don't put expensive queries in context processors — they run on every request
Custom Context Processor
Custom Context Processor
# mysite/context_processors.py
# def site_info(request):
# return {
# 'site_name': 'My Django Blog',
# 'site_tagline': 'A blog about Django',
# 'current_year': 2026,
# }
# def notification_count(request):
# if request.user.is_authenticated:
# count = request.user.notifications.filter(read=False).count()
# return {'unread_notifications': count}
# return {'unread_notifications': 0}
# settings.py — Register context processors
# TEMPLATES = [{
# 'BACKEND': 'django.template.backends.django.DjangoTemplates',
# 'OPTIONS': {
# 'context_processors': [
# 'django.template.context_processors.debug',
# 'django.template.context_processors.request',
# 'django.contrib.auth.context_processors.auth',
# 'django.contrib.messages.context_processors.messages',
# 'mysite.context_processors.site_info', # Custom
# 'mysite.context_processors.notification_count', # Custom
# ],
# },
# }]
# Now in ANY template:
# <title>{{ site_name }}</title>
# <span>Notifications: {{ unread_notifications }}</span>Tip
Tip
Context processors are great for site-wide data: settings, navigation, user notifications. Don't overuse them.
Diagram
Loading diagram…
QuerySets are LAZY — no DB hit until evaluated.
Common Mistake
Warning
Adding too many context processors. Each one runs on EVERY request. Keep them lightweight or use caching.
Practice Task
Note
(1) Create a context processor for site settings. (2) Add it to TEMPLATES. (3) Use the variables in all templates.
Quick Quiz
Key Takeaways
- Context processors are functions that add variables to every template's context automatically.
- A context processor is a function that takes request, returns a dict
- The returned dict is merged into every template's context
- Built-in: django.contrib.auth.context_processors.auth (adds user)