Django HTTP 500 Fehler

8

Ich erstelle eine benutzerdefinierte HTTP 500-Fehlervorlage. Warum zeigt es Django, wenn ich eine Exception erzeuge und nicht, wenn ich HttpResponseServerError zurückgebe (ich bekomme einfach den Standard-Fehler des Browsers 500)? Ich finde dieses Verhalten seltsam ...

    
heri0n 06.02.2013, 14:55
quelle

3 Antworten

11

Das HttpResponseServerError erbt von HttpResponse und ist eigentlich ganz einfach:

%Vor%

Sehen wir uns also den HttpResponse -Konstruktor an:

%Vor%

Wie Sie sehen können, ist content leer.

Sehen wir uns jetzt an, wie es von Django selbst aufgerufen wird (ein Auszug aus django.views.defaults):

%Vor%

Wie Sie sehen können, wenn Sie einen Serverfehler erzeugen, wird die Vorlage 500.html verwendet, aber wenn Sie einfach HttpResponseServerError zurückgeben, ist der Inhalt leer und der Browser kehrt zu seiner Standardseite zurück.

    
dmg 06.02.2013, 15:15
quelle
2

Platziere das unten in der urls.py.

%Vor%

Setzen Sie 500.html in Ihre Vorlagen. Genauso einfach.

    
catherine 06.02.2013 15:23
quelle
0

Hast du es mit einem anderen Browser versucht? Ist Ihre benutzerdefinierte Fehlerseite größer als 512 Byte? Es scheint, dass einige Browser (einschließlich Chrome) die Fehlerseite durch ihre eigenen ersetzen, wenn die Antwort des Servers kürzer als 512 Byte ist.

    
niconoe 06.02.2013 15:01
quelle

Tags und Links