我爲許多頁面設置了頁面級緩存。但是,一段時間後,管理員用戶登錄以預覽對該站點的潛在更改。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