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.