Ich habe eine Funktion, die eine CSV-Datei mit Pandas analysiert und ein Diktat mit zusammenfassenden Informationen erstellt. Ich möchte die Ergebnisse als Antwort aus einer Flask-Ansicht zurückgeben. Wie gebe ich eine JSON-Antwort zurück?
@app.route("/summary")
def summary():
d = make_summary()
# send it back as json
jsonify
serialisiert die Daten, die Sie an JSON übergeben. Wenn Sie die Daten selbst serialisieren möchten, erstellen Siejsonify
eine Antwort mitstatus=200
undmimetype='application/json'
.quelle
Übergeben Sie Schlüsselwortargumente an
flask.jsonify
und sie werden als JSON-Objekt ausgegeben.Wenn Sie bereits ein Diktat haben, können Sie es direkt als übergeben
jsonify(d)
.quelle
Wenn Sie
jsonify
aus irgendeinem Grund nicht verwenden möchten , können Sie das, was es tut, manuell ausführen. Rufen Sieflask.json.dumps
auf, um JSON-Daten zu erstellen, und geben Sie dann eine Antwort mit demapplication/json
Inhaltstyp zurück.flask.json
unterscheidet sich vom eingebautenjson
Modul. Es verwendet das schnelleresimplejson
Modul, sofern verfügbar, und ermöglicht verschiedene Integrationen in Ihre Flask-App.quelle
Wenn Sie eine vom Benutzer hochgeladene Datei analysieren möchten, zeigt der Flask- Schnellstart , wie Sie Dateien von Benutzern abrufen und darauf zugreifen können. Holen Sie sich die Datei von
request.files
und übergeben Sie sie an die Zusammenfassungsfunktion.Ersetzen Sie den
'data'
Schlüssel fürrequest.files
durch den Namen der Dateieingabe in Ihrem HTML-Formular.quelle
So geben Sie eine JSON-Antwort zurück und legen einen Statuscode fest
make_response
:Inspiration aus diesem Kommentar im Flask Issue Tracker.
quelle
Ab Version 1.1.0 Flask wird eine Ansicht, die ein Diktat zurückgibt, in eine JSON-Antwort umgewandelt .
quelle
Ich benutze einen Dekorateur, um das Ergebnis von zurückzugeben
jsonfiy
. Ich denke, es ist besser lesbar, wenn eine Ansicht mehrere Rückgaben hat. Dies unterstützt nicht die Rückgabe eines Tupels wiecontent, status
, aber ich behandleapp.errorhandler
stattdessen die Rückgabe von Fehlerstatus mit .quelle
Vor Flask 0.11 konnte
jsonfiy
ein Array nicht direkt zurückgegeben werden. Übergeben Sie die Liste stattdessen als Schlüsselwortargument.quelle
Wenn Sie in Flask 1.1 ein Wörterbuch zurückgeben, wird es automatisch in JSON konvertiert. Wenn Sie also
make_summary()
ein Wörterbuch zurückgeben, können Sie dies tunDie SO, die nach dem Einfügen des Statuscodes fragt, wurde als Duplikat zu diesem geschlossen. Um diese Frage auch zu beantworten, können Sie den Statuscode einfügen, indem Sie ein Tupel des Formulars zurückgeben
(dict, int)
. Dasdict
wird in JSON konvertiert undint
ist der HTTP-Statuscode. Ohne Eingabe ist der Status der Standardwert 200. Im obigen Beispiel wäre der Code also 200. Im folgenden Beispiel wird er in 201 geändert.Sie können den Statuscode mit überprüfen
quelle
Wenn es ein Diktat ist, kann der Kolben es direkt zurückgeben (Version 1.0.2).
quelle
"" Verwenden der Flask Class-Base View "" "
quelle
Kolben 1.1.x.
Jetzt wird die Flask-Support-Anfrage direkt mit json zurückgegeben, jsonify ist nicht mehr erforderlich
ist äquivalent zu
Weitere Informationen finden Sie hier https://medium.com/octopus-wealth/returning-json-from-flask-cf4ce6fe9aeb und https://github.com/pallets/flask/pull/3111
quelle