Eigene Fehlerseiten anlegen
Wir hatten schon gesehen, dass es relativ einfach möglich ist,
eigene Fehlerseiten für gewisse HTTP-Status-Codes auszugeben.
Zum Beispiel wenn eine Resource nicht gefunden wurde, ist es üblich, eine
404-Fehlerseite
auszugeben. Meist passiert das im Zusammenhang, wenn eine URL nicht gefunden wird oder ein angefragtes Objekt nicht exisitert, zum
Beispiel über die Funktion get_objects_or_404
. Manchmal will man aber das Verhalten noch mehr steuern und gezielt einen anderen Statuscode zurückgeben.
Diese Fehlerseiten werden angezeigt, wenn DEBUG=False
ist, also wenn sich die Website im Live-Betrieb befindet.
Die eigenen Fehlerseiten werden in event_manager/templates
angelegt.
404 NOT FOUND
Wenn eine eigene 404.html
-Datei angelegt wird, wird diese im Falle eines 404 Fehlers angezeigt.
500 Server Error
Wenn eine eigene 500.html
-Datei angelegt wird, wird diese im Falle eines 500 Fehlers angezeigt.
403 Forbidden
Wenn eine eigene 403.html
-Datei angelegt wird, wird diese im Falle eines 403 Fehlers angezeigt.
ref Bad Request
Wenn eine eigene ref.html
-Datei angelegt wird, wird diese im Falle eines ref Fehlers angezeigt.
In der render-Funktion den Statuscode übergeben
Wir können der render-Funktion noch ein weiteres
Keyword-Argument mitgeben: status
definiert den HTTP-Status,
den die Funktion zurückgibt. Damit können wir gezielt den Statuscode steuern
und sogar wie gewohnt Daten mit im Kontext übergeben.
Das Template für die 404-Seite ist wie gewohnt unter
event_manager/event_manager/templates
zu finden. Um allerdings den Kontext
mit auszugeben, müssen wir im Anschluss auch noch das Template verändern.
Unter event_manager/events/views.py
legen wir folgende funktionsbasierte
View an:
def send404(request):
return render(
request,
"404.html",
{"data": "some data"},
status=404
)
Jetzt passen wir das Template unter
event_manager/event_manager/templates/404.html
an. Wir wollen die
Fehlerseite etwas verbessern und die MÖglichkeit bieten, den Fehler aus dem
Kontext-Dictionary auszugeben.