2010-04-28 2 views
6

Ich habe ein paar Projekte in Django und wechseln ab und zu zwischen den ein und anderen. Alle von ihnen haben einen/media/Pfad, der von django.views.static.serve serviert wird, und sie alle haben eine /media/css/base.css Datei.Wie verhindert man HTTP 304 in Django Testserver

Das Problem ist, wenn ich ein Projekt ausführen, die Anforderungen an base.css geben ein HTTP 304 (nicht geändert) zurück, wahrscheinlich weil der Zeitstempel nicht geändert hat. Aber wenn ich das andere Projekt ausführe, wird das gleiche 304 zurückgegeben, was dazu führt, dass der Browser die Datei verwendet, die vom vorherigen Projekt zwischengespeichert wurde (und daher das falsche Stylesheet verwendet).

Nur für das Protokoll, hier sind die Middleware-Klassen:

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.middleware.transaction.TransactionMiddleware', 
) 

Ich benutze immer die Standardadresse http://localhost:8000. Gibt es eine andere Lösung (außer die Verwendung verschiedener Ports - 8001, 8002, etc.)?

+0

Hallo @Augusto Men. Wenn Sie nicht den Standard-Port 8000 verwenden wollen, dann können Sie Ihren Port mit Ihrem Befehl no-as python manage.py runserver 8001 –

Antwort

11

Sie können Ihre eigene Middleware für die rollen:

class NoIfModifiedSinceMiddleware(object): 
    def process_request(self, request): 
     request.META.pop('HTTP_IF_MODIFIED_SINCE', None) 

Im Grunde ist es entfernt nur HTTP_IF_MODIFIED_SINCE Header aus der Anfrage.

Nachträglich: Oder Sie können monkeypatch django.views.static.serve und ersetzen was_modified_since Funktion durch die, die immer True zurückgibt.

+0

Hallo @alex vasi! Ich habe das gleiche Problem bitte elaborate Ihre Antwort, so dass ich untertauchen kann, wie kann ich oben genannten Code anwenden. –

+0

Lerne die Middleware kennen, sie sind einfach und die Django Docs sind großartig. Für den Teil "monkeypatch" müssen Sie herausfinden, wo das djagno-Modul installiert ist. Dann bearbeiten Sie django/view/static/serve wie in der Antwort angegeben. –

+0

Bitte beachten Sie, dass beim Einfügen dieser Middleware die erste Middleware in der Liste funktionieren muss. Danke für die Lösung! –

Verwandte Themen