2 Stimmen

django erhöhen anderen Statuscode als http404?

Ich bin neu in beiden Web im Allgemeinen / Django Welt. Ich habe erhöht Http404 für alle meine Fehlerfälle (aus meiner Sicht). Ich denke, dass das Anheben anderer als 404 , wie zum Beispiel 401, 402.. für verschiedene Fehler wäre es für mich viel einfacher zu erkennen, was schief gelaufen ist.

Ich fand return HttpResponse(status=401) würde die Aufgabe erfüllen. Aber ist dies eine akzeptable Praxis? Sollte ich mich nicht in den Statuscode einmischen, weil jeder von ihnen etwas bedeuten soll?

1voto

Alasdair Punkte 275312

Jeder der Statuscodes hat eine bestimmte Bedeutung. Siehe die Liste der HTTP-Statuscodes Seite auf der Wikipedia-Seite für die Bedeutung der einzelnen Codes.

Sie sollten für jede Antwort einen geeigneten Statuscode wählen. Sie sollten zum Beispiel nur Folgendes verwenden 401 wenn der Client nicht autorisiert ist. Es ist keine gute Idee, den Statuscodes eigene Bedeutungen zuzuweisen.

Wenn Sie die Fehlererkennung erleichtern wollen, können Sie eine benutzerdefinierte Kopfzeile festlegen stattdessen:

response = HttpResponse()
response['My-App-Error'] = error_code
return response

0voto

Aamir Rind Punkte 36855

Ja, Sie können die Unterklasse HttpResponse um verschiedene Arten von HTTP-Antworten zu verarbeiten. Mehr Infos aquí

Sie können zum Beispiel Folgendes senden HttpResponse con status code 403 como:

from django.http import HttpResponseBadRequest

def my_view(request):
    # ...

    return HttpResponseBadRequest('<h1>You are not authorized to view this page</h1>')

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X