我为许多页面设置了页面级缓存。但是,一段时间后,管理员用户登录以预览对该站点的潜在更改。Django - 禁用用户的页面级缓存
有没有一种方法来禁用页面级缓存只是为这些用户?
我通过阅读the docs但我什么也没看见。
更新: 下面是基于v1k45的回答我尝试:
from django.middleware.cache import FetchFromCacheMiddleware
logger = logging.getLogger(__name__)
class ExceptImpersonateFetchFromCacheMiddleware(FetchFromCacheMiddleware):
def process_request(self, request):
# Break out of caching is we're using impersonate
if request.user and hasattr(request.user, 'is_impersonate') and request.user.is_impersonate:
logger.warning("Skipping cache_page for user %s because it is impersonation" % str(request.user))
request._cache_update_cache = False
return None
# Normal flow:
return super(ExceptImpersonateFetchFromCacheMiddleware, self).process_request(request)
这看起来很有希望!谢谢!什么是最好的方法来做到这一点?我在修改Django自己的源代码,还是有更聪明的方法? – Greg
您并未修改django的源代码,您只是更换了django提供的中间件,该中间件可随时更换。所有你需要做的就是把你的扩展类的Python路径放在settings.py的'MIDDLEWARE_CLASSES'中。 – v1k45
您是否在说我的新类“FetchFromCacheMiddleware”以覆盖Django的版本?我没有在MIDDLEWARE_CLASSES的settings.py中看到“FetchFromCacheMiddleware”。 – Greg