Ich habe einen benutzerdefinierten Handler404 für eine authentifizierte Django-Website erstellt, um Informationslecks zu vermeiden.
%Vor%Funktionell macht es genau das, was ich will. Die 404-Rückgabeseite hat jedoch einen Status 200, der vom Code her korrekt ist. Aber das muss offensichtlich ein 404-Return-Status sein.
Ein Raise404 funktioniert nicht, weil es, wenn es nicht in einer unendlichen Rekursion endet, hier zurückkommt und somit zum selben Problem führt.
Ich habe versucht, eine HttpResponseNotFound, aber das nimmt nur eine Zeichenfolge als Argument und nicht eine Vorlage, die nicht zu DRY-ish.
Und ich habe manuell versucht, den Header mit:
zu setzen %Vor%Dann ist der Status-Header tatsächlich gesetzt, aber der Browser zeigt immer noch eine 200 an.
Ich habe keine Optionen mehr. Jeder, der Tipps hat, sei bitte mein Held ...:)
Danke und Grüße,
Gerard.
Bearbeiten : Ich habe versucht, den Statusfeldwert in jeder Art BTW, aber kein Glück: (
Ich würde render_to_string
und HttpResponseNotFound
, z return HttpResponseNotFound(render_to_string('404.html'))
.
Ich habe endlich gefunden, warum der zurückgegebene Statuscode nicht funktioniert hat. Anstatt eine Header-Nachricht zu setzen, ist es einfach:
%Vor%Dennoch gewinnt der von PiotrLegnica vorgeschlagene Code definitiv an Einfachheit, Lesbarkeit und Schönheit. Das Abzeichen steht immer noch;)
Grüße,
Gerard.
Basierend auf den obigen Vorschlägen, hier ist meine kurze Version von 404, 500 Handlern:
%Vor%Sie könnten etwas wie das folgende Beispiel tun.
Fügen Sie in die URLs Ihrer Anwendung Folgendes hinzu:
%Vor%Fügen Sie in Ihrer Anwendung sviews.py hinzu:
%Vor%Das Geheimnis liegt in der letzten Zeile: status = 404
Ich hoffe, es hat geholfen!
Ich freue mich darauf, die Beiträge der Community zu diesem Ansatz zu sehen. =)
Sie können render
method verwenden:
Gibt eine HttpResponse zurück, deren Inhalt mit dem Ergebnis von gefüllt ist Aufruf von django.template.loader.render_to_string () mit dem übergebenen Argumente.
Verwendet standardmäßig einen RequestContext.
Beispiel:
%Vor%Und mit Schlüsselwörtern:
%Vor%Tags und Links django http-status-code-404