J'ai une fonction qui analyse un fichier CSV avec Pandas et produit un dict avec des informations résumées. Je souhaite renvoyer les résultats sous forme de réponse à partir d'une vue Flask. Comment renvoyer une réponse JSON?
@app.route("/summary")
def summary():
d = make_summary()
# send it back as json
jsonify
sérialise les données que vous transmettez à JSON. Si vous souhaitez sérialiser les données vous-même, faites ce qui sejsonify
passe en créant une réponse avecstatus=200
etmimetype='application/json'
.la source
Transmettez les arguments des mots clés à
flask.jsonify
et ils seront affichés en tant qu'objet JSON.Si vous avez déjà un dict, vous pouvez le passer directement en tant que
jsonify(d)
.la source
Si vous ne souhaitez pas l'utiliser
jsonify
pour une raison quelconque, vous pouvez faire ce qu'il fait manuellement. Appelezflask.json.dumps
pour créer des données JSON, puis renvoyez une réponse avec leapplication/json
type de contenu.flask.json
est distinct dujson
module intégré. Il utilisera lesimplejson
module le plus rapide s'il est disponible et permet diverses intégrations avec votre application Flask.la source
Si vous souhaitez analyser un fichier téléchargé par l'utilisateur, le démarrage rapide de Flask montre comment obtenir des fichiers des utilisateurs et y accéder. Obtenez le fichier
request.files
et passez-le à la fonction de résumé.Remplacez la
'data'
clé pourrequest.files
par le nom du fichier entré dans votre formulaire HTML.la source
Pour renvoyer une réponse JSON et définir un code d'état, vous pouvez utiliser
make_response
:Inspiration tirée de ce commentaire dans le suivi des problèmes de Flask.
la source
À partir de la version 1.1.0 Flask, si une vue renvoie un dict, elle sera transformée en réponse JSON .
la source
J'utilise un décorateur pour retourner le résultat de
jsonfiy
. Je pense que c'est plus lisible quand une vue a plusieurs retours. Cela ne prend pas en charge le retour d'un tuple commecontent, status
, mais je gère à la place le retour des états d'erreurapp.errorhandler
.la source
Avant Flask 0.11,
jsonfiy
ne permettait pas de retourner directement un tableau. Au lieu de cela, passez la liste en tant qu'argument de mot clé.la source
Dans Flask 1.1, si vous renvoyez un dictionnaire, il sera automatiquement converti en JSON. Donc, si
make_summary()
renvoie un dictionnaire, vous pouvezL' OS qui demande d'inclure le code de statut a été fermé en double à celui-ci. Donc, pour répondre également à cette question, vous pouvez inclure le code d'état en renvoyant un tuple du formulaire
(dict, int)
. Ledict
est converti en JSON etint
sera le code d'état HTTP. Sans aucune entrée, le statut est le 200 par défaut. Ainsi, dans l'exemple ci-dessus, le code serait 200. Dans l'exemple ci-dessous, il est remplacé par 201.Vous pouvez vérifier le code d'état à l'aide de
la source
si c'est un dict, flask peut le retourner directement (Version 1.0.2)
la source
"" " Utilisation de Flask Class-base View " ""
la source
Flacon 1.1.x
maintenant la demande de support Flask revient directement avec json, jsonify n'est plus requis
est équivalent à
pour plus d'informations, lisez ici https://medium.com/octopus-wealth/returning-json-from-flask-cf4ce6fe9aeb et https://github.com/pallets/flask/pull/3111
la source