.. _http_errors: 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: .. code-block:: python 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.