Caching in Django in practice: Redis backend, cache_page and template fragments

Django Caching Patterns November 13, 2026 python

How do you set up caching in Django in practice?

python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# ======================================================================
# Q: How do you set up caching in Django in practice?
# ======================================================================

# settings.py (Django 4.0+ has a native Redis backend)
CACHES = {'default': {
    'BACKEND': 'django.core.cache.backends.redis.RedisCache',
    'LOCATION': 'redis://redis:6379/1',
    'KEY_PREFIX': 'shop', 'TIMEOUT': 300}}

@cache_page(60 * 5)                         # whole page
@vary_on_headers('Accept-Language')
def category(request, slug): ...

{% load cache %}                            {# template fragment #}
{% cache 600 sidebar request.user.id %} ... {% endcache %}