ticks - python plot beschriftung



Gelegentlich werden Django-Nachrichten über Anfragen hinweg wiederholt(dh sie werden nicht gelöscht) (1)

Sehr selten wird eine Django Nachricht in einer HTML Antwort gerendert. Dann GET der Benutzer eine andere Seite ab, und die Django-Nachricht wird erneut gerendert. Manchmal erhält der Benutzer danach eine weitere Seite und die gleiche Nachricht wird erneut angezeigt.

Dies passiert sehr selten, aber wenn dies der Fall ist, sehen die meisten Benutzer das gleiche Verhalten für einige Momente. (Es passierte einmal in einem gruppenübergreifenden Test, und jeder im Raum sah das gleiche Verhalten für etwa fünf Minuten auf jedem seiner Computer, bevor er fortging.)

Dieses Verhalten ist bei vielen verschiedenen Ansichten aufgetreten. und außerdem fügt jede Ansicht sie auf die gleiche Weise hinzu (siehe unten).

Ich konnte den Fehler weder in unserer implementierten Umgebung ( wsgi.py ) noch beim Ausführen des Projekts in einer lokalen Umgebung (unter manage.py ) zuverlässig reproduzieren. (Ich werde feststellen, dass ich dieses Problem noch nie lokal gesehen habe.)

Hat jemand eine Idee, warum dies passieren könnte?

Beispiel für das Hinzufügen einer Erfolgsmeldung

       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))
        )

Dies ist der Vorlagencode, der die Nachricht rendert:

<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>&times;</a>
      <strong>{{ message.message|safe }}</strong>
    </div>
  {% endfor %}
</div>

Relevante Einstellungen:

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',
                         ...}}   

Es scheint, dass dies ein bekanntes Problem ist, verursacht durch Caching in Django. Hier ist der Kommentar eines Django-Core-Entwicklers:

"Ich denke nicht, dass Django mit diesem Problem automatisch und korrekt umgehen kann. Es ist ein weit verbreitetes Muster, um Nachrichten in der Basisvorlage einer Website zu durchlaufen. Wenn wir das Caching deaktivieren, nur weil Nachrichten auf einer bestimmten Seite angezeigt werden, rette nur den Cache für die meisten Websites. "

Das vollständige Ticket ist hier: https://code.djangoproject.com/ticket/13894