Ich habe eine Funktion, die eine CSV-Datei mit Pandas analysiert und ein Diktat mit zusammenfassenden Informationen erzeugt. Ich möchte die Ergebnisse als Antwort aus einer Flask-Ansicht zurückgeben. Wie kann ich eine JSON-Antwort zurückgeben?
@app.route("/summary")
def summary():
d = make_summary()
# send it back as json
Übergeben Sie die Zusammenfassungsdaten an die Funktion jsonify
, die eine JSON-Antwort zurückgibt.
from flask import jsonify
@app.route('/summary')
def summary():
d = make_summary()
return jsonify(d)
Ab Flask 0.11 kannst du jeden JSON-serialisierbaren Typ, nicht nur dict, als Top-Level-Objekt übergeben.
Übergeben Sie Schlüsselwortargumente an flask.jsonify
und sie werden als JSON-Objekt ausgegeben.
@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
}
Wenn Sie bereits ein dict haben, können Sie es direkt als jsonify(d)
übergeben.
Wenn Sie eine vom Benutzer hochgeladene Datei analysieren wollen, zeigt der Flask quickstart, wie man Dateien von Benutzern abruft und auf sie zugreift. Holen Sie die Datei aus request.files
und übergeben Sie sie an die Funktion summary.
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')
Ersetze den Schlüssel 'data'
für request.files
mit dem Namen der Datei, die du in deinem HTML-Formular eingegeben hast.