Ich versuche eine REST API in Django zu erstellen, indem ich Json ausspreche. Ich habe Probleme, wenn ich eine POST-Anfrage mit curl im Terminal mache. Der Fehler, den ich bekomme, ist
Sie haben diese URL über POST aufgerufen, aber die URL endet nicht in einem Schrägstrich und Sie haben APPEND_SLASH festgelegt. Django kann nicht auf die Schrägstrich-URL umleiten während die POST-Daten beibehalten werden. Ändern Sie Ihr Formular, um auf zu zeigen 127.0.0.1:8000/add/ (beachten Sie den abschließenden Schrägstrich) oder setzen Sie APPEND_SLASH = False in Ihren Django-Einstellungen.
Meine URL.py ist
%Vor%und meine Ansichten sind
%Vor%Ich weiß, dass es Json nicht gibt, aber ich habe das oben erwähnte Problem, wenn ich eine POST-Anfrage im Terminal mache.
%Vor%Ich bin jedoch neu im Django.
Stellen Sie zuerst sicher, dass Sie die Anfrage an http://127.0.0.1/add/
nicht http://127.0.0.1/add
senden.
Zweitens möchten Sie vielleicht auch die Ansicht von der csrf-Verarbeitung ausnehmen, indem Sie die @csrf_exempt
Dekorator - da Sie nicht das entsprechende Token von cURL senden.
Für die Konsistenz der URL hat Django eine Einstellung namens APPEND_SLASH
, die immer einen Schrägstrich an das Ende der URL anhängt, wenn sie nicht auf diese Weise gesendet wurde. Dies stellt sicher, dass /my/awesome/url/
immer von dieser URL geliefert wird, anstatt von /my/awesome/url
und /my/awesome/url/
.
Django tut dies jedoch, indem er automatisch die Version ohne den Schrägstrich am Ende auf den mit dem Schrägstrich am Ende umleitet. Redirects enthalten den Status der Anforderung nicht mit ihnen. Wenn dies geschieht, werden Ihre POST-Daten gelöscht.
Sie müssen lediglich sicherstellen, dass Sie beim Senden Ihres POST die Datei am Ende an die Version mit dem Schrägstrich senden.
Tags und Links python django restful-architecture