首页 > 解决方案 > 如何为超级用户禁用 Django 缓存视图?

问题描述

我使用 cache_page 装饰器在 Django 中缓存视图。

如何禁用超级用户或授权用户的缓存?

标签: djangocaching

解决方案


CacheMiddleware您可以在类的帮助下创建自定义装饰器

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):
    ...

推荐阅读