Я установил кеширование уровня страницы для многих наших страниц. Однако время от времени администратор регистрируется, чтобы просмотреть потенциальные изменения на сайте.Django - Отключить кэширование уровня страницы пользователем
Есть ли способ отключить кеширование уровня страницы только для этих пользователей?
Я прочитал the docs, но ничего не увидел.
Update: Вот моя попытка на основе ответа 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? Я не вижу «FetchFromCacheMiddleware», упомянутый в settings.py в MIDDLEWARE_CLASSES. – Greg