Django caching stores frequent data to reduce database queries.
1from django.core.cache import cache2from django.views.decorators.cache import cache_page34# Simple cache5cache.set("my_key", "my_value", timeout=300) # 5 minutes6value = cache.get("my_key")78# Cache in view9@cache_page(60 * 15) # 15 minutes10def product_list(request):11 products = Product.objects.all()12 return render(request, "products/list.html", {"products": products})1314# Cache query results15def get_products():16 cache_key = "all_products"17 products = cache.get(cache_key)1819 if products is None:20 products = list(Product.objects.all())21 cache.set(cache_key, products, 300)2223 return products2425# Low-level cache API26cache.add("new_key", "value") # Only if not exists27cache.delete("my_key")28cache.clear() # Clear all2930# Cache template fragment31{% load cache %}32{% cache 500 sidebar %}33 <div>Sidebar content</div>34{% endcache %}3536# settings.py37CACHES = {38 "default": {39 "BACKEND": "django_redis.cache.RedisCache",40 "LOCATION": "redis://127.0.0.1:6379/1",41 }42}
Cache backends:
Redis — production.Memcached — fast, distributed.File-based — development.