Tengo una función que analiza un archivo CSV con Pandas y produce un dict con información de resumen. Quiero devolver los resultados como respuesta desde una vista de Flask. ¿Cómo devuelvo una respuesta JSON?
@app.route("/summary")
def summary():
d = make_summary()
# send it back as json
jsonify
serializa los datos que le pasa a JSON. Si desea serializar los datos usted mismo, haga lo quejsonify
hace creando una respuesta constatus=200
ymimetype='application/json'
.fuente
Pase argumentos de palabras clave
flask.jsonify
y se generarán como un objeto JSON.Si ya tiene un dict, puede pasarlo directamente como
jsonify(d)
.fuente
Si no quiere usarlo
jsonify
por alguna razón, puede hacer lo que hace manualmente. Llameflask.json.dumps
para crear datos JSON, luego devuelva una respuesta con elapplication/json
tipo de contenido.flask.json
es distinto deljson
módulo incorporado . Utilizará elsimplejson
módulo más rápido si está disponible, y permite diversas integraciones con su aplicación Flask.fuente
Si desea analizar un archivo cargado por el usuario, el inicio rápido de Flask muestra cómo obtener archivos de los usuarios y acceder a ellos. Obtenga el archivo
request.files
y páselo a la función de resumen.Reemplace la
'data'
clave pararequest.files
con el nombre de la entrada del archivo en su formulario HTML.fuente
Para devolver una respuesta JSON y establecer un código de estado, puede usar
make_response
:Inspiración tomada de este comentario en el rastreador de problemas de Flask.
fuente
A partir de la versión 1.1.0 Flask, si una vista devuelve un dict, se convertirá en una respuesta JSON .
fuente
Yo uso un decorador para devolver el resultado de
jsonfiy
. Creo que es más legible cuando una vista tiene múltiples retornos. Esto no admite la devolución de una tupla comocontent, status
, pero en su lugar manejo los estados de error de devoluciónapp.errorhandler
.fuente
Antes de Flask 0.11,
jsonfiy
no permitiría devolver una matriz directamente. En su lugar, pase la lista como argumento de palabra clave.fuente
En Flask 1.1, si devuelve un diccionario y se convertirá automáticamente en JSON. Entonces, si
make_summary()
devuelve un diccionario, puedeEl SO que pregunta sobre la inclusión del código de estado se cerró como un duplicado de este. Entonces, para responder también a esa pregunta, puede incluir el código de estado devolviendo una tupla del formulario
(dict, int)
. Eldict
se convierte a JSON yint
será el código de estado HTTP. Sin ninguna entrada, el Estado es el 200 predeterminado. Por lo tanto, en el ejemplo anterior, el código sería 200. En el ejemplo a continuación, se cambia a 201.Puede verificar el código de estado usando
fuente
si es un dict, el matraz puede devolverlo directamente (Versión 1.0.2)
fuente
"" " Uso de la vista base de clase de matraz " ""
fuente
Frasco 1.1.x
ahora la solicitud de soporte de Flask vuelve directamente con json, ya no se requiere jsonify
es equivalente a
Para obtener más información, lea aquí https://medium.com/octopus-wealth/returning-json-from-flask-cf4ce6fe9aeb y https://github.com/pallets/flask/pull/3111
fuente