How to create and use custom context processors in django?

Md Sadiqul Islam
2 min readMar 4, 2023

Context processors are functions that allow you to add additional context variables to the context of every Django template rendered in your application. Global context processors are context processors that are available in every template of your application.

You might use a global context processor when you need to provide a specific piece of information to every template in your application. For example, you might want to include information about the current user in the context of every template, or include a list of the most recent blog posts on your site.

To create a global context processor in Django, you’ll need to do the following:

  1. Create a Python function that takes a request object as an argument and returns a dictionary of context variables.
  2. Add the path to the function to the context_processors option in your Django project's settings file.

For example, let’s say you want to include the current date and time in the context of every template in your application. You could create a global context processor like this:

# myapp/context_processors.py

import datetime

def current_datetime(request):
return {'current_datetime': datetime.datetime.now()}

Then, add the path to the function to the context_processors option in your project's settings file:

# myproject/settings.py

# ...

TEMPLATES = [
{
# ...
'OPTIONS': {
'context_processors': [
# ...
'myapp.context_processors.current_datetime',
],
},
},
]

Now, the current_datetime context processor will be called for every template rendered in your application, and the current_datetime variable will be available in the context of each template.

For example, if your current_datetimefunction adds a variable called current_datetime to the context, you can use it in your template like this:

<h1>{{ current_datetime }}</h1>

That’s it! You have successfully created and used a custom context processor in your Django application. You can create as many custom context processors as you need, but make sure to only include the ones you actually need in the context_processors list to avoid slowing down the rendering of your templates.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

No responses yet

Write a response