python - example - Ocasionalmente, los mensajes de Django se repiten en todas las solicitudes(es decir, no se borran)
mysqlclient django (1)
Parece que este es un problema notable causado por el almacenamiento en caché en Django. Aquí está el comentario hecho por un desarrollador central de Django:
"No creo que Django pueda manejar este problema de forma automática y correcta. Es un patrón muy común repetir los mensajes en la plantilla base de un sitio web. Si desactivamos el almacenamiento en caché simplemente porque los mensajes se pueden mostrar en una página determinada, nos '' simplemente estamos matando el caché para la mayoría de los sitios web ".
El boleto completo está aquí: https://code.djangoproject.com/ticket/13894
Muy rara vez, un mensaje de Django se representa en una respuesta HTML
. Luego, el usuario GET
otra página y el mensaje de Django se vuelve a presentar. A veces, el usuario GET
otra página a partir de entonces, y el mismo mensaje se mostrará una vez más.
Esto ocurre muy raramente, pero cuando lo hace, la mayoría de los usuarios ven el mismo comportamiento por unos momentos. (Sucedió una vez en una prueba grupal de navegador cruzado, y todos en la sala vieron el mismo comportamiento en cada una de sus computadoras durante aproximadamente cinco minutos antes de irse).
Este comportamiento ha ocurrido con muchas vistas diferentes; y además, cada vista los agrega de la misma manera (ver a continuación).
No he podido reproducir el error de manera confiable, ya sea en nuestro entorno implementado (ejecutando wsgi.py
) o al ejecutar el proyecto en un entorno local (ejecutando manage.py
). (Notaré que nunca he visto este problema localmente).
¿Alguien tiene alguna idea de por qué esto podría estar pasando?
Ejemplo de un mensaje de éxito que se agrega.
messages.success(
request,
"Changes to {form} {request} were successfully saved."/
.format(form=self.form.display_name,
request=serv_request_id_as_url(self.serv_request))
)
Este es el código de la plantilla que representa el mensaje:
<div id="messages">
{% for message in messages %}
<div class="alert alert-{{ message.tags }}">
<a class="close" data-dismiss="alert" href="#" title="Close"><span class="accessibility">Close this message.</span>×</a>
<strong>{{ message.message|safe }}</strong>
</div>
{% endfor %}
</div>
Ajustes relevantes:
MIDDLEWARE_CLASSES = (
''django.middleware.gzip.GZipMiddleware'',
''django.middleware.common.CommonMiddleware'',
''outage.middleware.OutageMiddleware'',
''django.contrib.sessions.middleware.SessionMiddleware'',
''django.middleware.transaction.TransactionMiddleware'',
''django.middleware.csrf.CsrfViewMiddleware'',
''django.middleware.clickjacking.XFrameOptionsMiddleware'',
''utdirect.middleware.HttpHeaderMiddleware'',
''django.contrib.auth.middleware.AuthenticationMiddleware'',
''django.contrib.messages.middleware.MessageMiddleware'', ... )
MESSAGE_STORAGE = ''django.contrib.messages.storage.session.SessionStorage''
DATABASES = {''default'': {''ENGINE'': ''django.db.backends.oracle'',
...}}