Eu tenho uma função que analisa um arquivo CSV com Pandas e produz um ditame com informações resumidas. Quero retornar os resultados como uma resposta a partir de uma visão do frasco. Como é que devolvo uma resposta JSON?
@app.route("/summary")
def summary():
d = make_summary()
# send it back as json
Passe os dados resumidos para a função jsonify, que retorna uma resposta do JSON.
from flask import jsonify
@app.route('/summary')
def summary():
d = make_summary()
return jsonify(d)
A partir do frasco 0,11, você pode passar qualquer tipo de JSON-serializável, não apenas ditado, como o objeto de nível superior.
Passe argumentos de palavras-chave para flask.jsonify
e eles serão emitidos como um objeto JSON.
@app.route('/_get_current_user')
def get_current_user():
return jsonify(
username=g.user.username,
email=g.user.email,
id=g.user.id
)
{
"username": "admin",
"email": "admin@localhost",
"id": 42
}
Se você já tem uma dita, você pode passá-la diretamente como jsonify(d)
.
Se você quiser analisar um arquivo carregado pelo usuário, o Flask quickstart mostra como obter arquivos dos usuários e acessá-los. Obtenha o arquivo em `request.files' e passe-o para a função de resumo.
from flask import request, jsonify
from werkzeug import secure_filename
@app.route('/summary', methods=['GET', 'POST'])
def summary():
if request.method == 'POST':
csv = request.files['data']
return jsonify(
summary=make_summary(csv),
csv_name=secure_filename(csv.filename)
)
return render_template('submit_data.html')
Substitua a tecla 'data'
para request.files
pelo nome da entrada do arquivo no seu formulário HTML.