1

I use cache_page decorator for caching views in Django.

How can I disable cache for superuser or authorized users ?

Weblloyd
  • 25
  • 4
  • Hope that It will help https://stackoverflow.com/questions/62913281/django-1-11-disable-cache-for-authentificated-users – barii May 20 '21 at 12:38

1 Answers1

0

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):
    ...
JPG
  • 82,442
  • 19
  • 127
  • 206