J'ai configuré la mise en cache au niveau de la page pour plusieurs de nos pages. Cependant, de temps en temps, un utilisateur admin se connecte pour prévisualiser les modifications potentielles sur le site.Django - Désactiver la mise en cache au niveau de la page par l'utilisateur
Existe-t-il un moyen de désactiver la mise en cache au niveau de la page uniquement pour ces utilisateurs? J'ai lu the docs mais je n'ai rien vu.
Mise à jour: Voilà ma tentative basée sur la réponse de 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)
Cela semble très prometteur! Merci! Quelle est la meilleure façon de faire cela? Est-ce que je modifie le propre code source de Django, ou y a-t-il un moyen plus intelligent? – Greg
Vous ne modifiez pas le code source de django, vous remplacez juste un middleware fourni par django qui est censé être remplaçable à tout moment. Tout ce que vous avez à faire est de mettre le chemin python de votre classe étendue dans votre settings.py 'MIDDLEWARE_CLASSES'. – v1k45
Voulez-vous nommer ma nouvelle classe "FetchFromCacheMiddleware" pour remplacer la version de Django? Je ne vois pas "FetchFromCacheMiddleware" mentionné dans settings.py dans MIDDLEWARE_CLASSES. – Greg