2011-01-06 8 views
9

Meine Frage ist einfach, wie zeige ich eine benutzerdefinierte Fehlerseite für HTTP-Status 405 (Methode nicht zulässig) in Django wann mit dem @require_POST Dekorateur?Wie eine benutzerdefinierte Fehlerseite für HTTP-Status 405 (Methode nicht zulässig) in Django anzuzeigen, wenn @require_POST

Ich verwende den django.views.decorators.http.require_POST Dekorator, und wenn die Seite von GET-Anfrage besucht wird, zeigt die Konsole einen Fehler 405, aber die Seite ist nur leer (nicht einmal eine Django-Fehlerseite). Wie bekomme ich Django, um eine benutzerdefinierte und/oder Standardfehlerseite für diese Art von Fehler anzuzeigen?

EDIT: Es ist erwähnenswert, dass ich versucht habe, eine 404.html, 500.html und 405.html Seite in meinem Vorlagen-Ordner - aber das hilft auch nicht. Ich habe auch variiert zwischen DEBUG = True und False, vergeblich.

Antwort

12

Sie müssen benutzerdefinierte Django Middleware schreiben. Sie können mit diesem beginnen und erweitern es zu überprüfen, ob 405.html Datei vorhanden ist und so weiter:

prüfen docs, wenn Sie nicht wissen, wie Middleware installieren:

http://docs.djangoproject.com/en/dev/topics/http/middleware/

Sie können auch diesen Artikel überprüfen:

http://mitchfournier.com/2010/07/12/show-a-custom-403-forbidden-error-page-in-django/

+0

Danke - es scheint jetzt so offensichtlich! Aber viel mehr Ärger als ich erwartet hatte. –

0

Wenn Sie in die documentation und den Quellcode von django.views.defaults schauen, sehen Sie, dass nur 404 und 500 Fehler in einer Weise unterstützt werden, dass Sie nur die 404.html resp. 500.html zu Ihrem Vorlagenverzeichnis.

In der Dok. Sie können auch die folgenden

Rückkehr HTTP-Fehlercodes in Django ist einfach lesen. Es gibt Unterklassen von HttpResponse für eine Anzahl von gemeinsamen HTTP-Statuscodes, die nicht 200 sind, (was "OK" bedeutet). Sie können die vollständige Liste der verfügbaren Unterklassen in die Anfrage/Antwort-Dokumentation finden.

So, wenn Sie einen Fehler 405 zurückgeben möchten, müssen Sie class

Ein example

+0

ich fürchte, du bist nicht die Frage zu beantworten - das Problem eines 405-Status wird nicht zurückkehren - die pr oblem zeigt eine Vorlage für diese Antwort an, während der Dekorierer @require_POST verwendet wird. –

+0

Sie haben Recht, verpasste die Informationen, die Sie den Dekorateur verwenden. –

0

die HttpResponseNotAllowed verwende ich bin nicht sicher, dass das möglich ist. Vielleicht sollten Sie einen Fehlerbericht einreichen.

+0

Nun, wir wissen jetzt, dass es möglich ist. Aber es ist alles andere als so einfach wie das Hinzufügen einer Seite für 404 und 500. In Anbetracht dessen, dass es einen eingebauten Dekorator für @require_POST usw. gibt, würde man erwarten, dass es einfacher ist. –

Verwandte Themen