How to Access a Dictionary Element in a Django Template?
Last Updated :
23 Jul, 2025
Accessing dictionary elements in Django templates can be accomplished through various methods, including direct access using dot or bracket notation, handling missing keys with default values or conditional checks, and utilizing custom template filters and tags for advanced use cases. Understanding these techniques will help us effectively render dynamic content in your Django applications, enhancing the flexibility and functionality of your templates.
In this article, we’ll explore different methods for accessing dictionary elements in a Django template, including direct access, using template filters, and custom template tags.
1. Direct Access to Dictionary Elements
In Django templates, we can access dictionary elements using dot notation or bracket notation, but the bracket notation is more versatile.
Example
Assume we have the following context data passed to your template:
Python
# views.py
from django.shortcuts import render
def example_view(request):
context = {
'user_info': {
'name': 'Alice',
'age': 30,
'city': 'New York'
}
}
return render(request, 'example_template.html', context)
To access dictionary elements in the template, we can use the following syntax:
HTML
<!-- example_template.html -->
<p>Name: {{ user_info.name }}</p> <!-- Dot notation -->
<p>Age: {{ user_info.age }}</p> <!-- Dot notation -->
<p>City: {{ user_info.city }}</p> <!-- Dot notation -->
While dot notation is convenient, it only works for keys that are valid Python identifiers (i.e., no spaces or special characters).
Lets understand by a simple Project
1. Set Up Django Project
First, create a new Django project and app. If you haven’t installed Django yet, you can do so using pip, and Create a new Django project and app.
2. Configure settings.py
Add myapp to the INSTALLED_APPS list in dictionary_example/settings.py:
# dictionary_example/settings.py
INSTALLED_APPS = [
...
'myapp',
]
3. Create a View
Define a view in myapp/views.py that passes a dictionary to the template:
Python
# myapp/views.py
from django.shortcuts import render
def dictionary_view(request):
context = {
'user_info': {
'name': 'Alice',
'age': 30,
'city': 'New York'
}
}
return render(request, 'myapp/dictionary_template.html', context)
4. Create a URL Pattern
Add a URL pattern to myapp/urls.py to map to the view:
Python
# myapp/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('dictionary/', views.dictionary_view, name='dictionary_view'),
]
Include the app URLs in the project’s main URL configuration:
Python
# dictionary_example/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('myapp.urls')),
]
5. Create a Template
Create a directory named templates inside myapp, and then create another directory named myapp inside templates. Within myapp, create a file named dictionary_template.html:
HTML
<!-- myapp/templates/myapp/dictionary_template.html -->
<!DOCTYPE html>
<html>
<head>
<title>Dictionary Example</title>
</head>
<body>
<h1>User Information</h1>
<p>Name: {{ user_info.name }}</p>
<p>Age: {{ user_info.age }}</p>
<p>City: {{ user_info.city }}</p>
</body>
</html>
6. Run the Development Server
Make sure we are in the project’s root directory (dictionary_example), and run the development server:
python manage.py runserver
7. Test the Application
Open your web browser and go to http://127.0.0.1:8000/dictionary/. we should see the user information displayed as defined in the template.
In the context dictionary, we can pass key value pair and access the data by referring to the key. The value can be an integer, a boolean, a list, a dictionary and any supported data structure in Python. For nested dictionaries, we can easily access data using using the dot notation and bracket notation.
Explore
Python Fundamentals
Python Data Structures
Advanced Python
Data Science with Python
Web Development with Python
Python Practice