I use cache_page decorator for caching views in Django.
How can I disable cache for superuser or authorized users ?
You can create a custom decorator with the help of CacheMiddleware
class as
from django.middleware.cache import CacheMiddleware
from django.utils.decorators import decorator_from_middleware_with_args
class CustomCacheMiddleware(CacheMiddleware):
def process_request(self, request):
if request.user.is_superuser:
request._cache_update_cache = False
return None
return super().process_request(request)
def custom_cache_page(timeout, *, cache=None, key_prefix=None):
return decorator_from_middleware_with_args(CustomCacheMiddleware)(
cache_timeout=timeout, cache_alias=cache, key_prefix=key_prefix
)
@custom_cache_page(60 * 15)
def my_view(request):
...