Jeg har en funktion, der analyserer en CSV-fil med Pandas og producerer et dict med oversigtsoplysninger. Jeg ønsker at returnere resultaterne som et svar fra en Flask-visning. Hvordan returnerer jeg et JSON-svar?
@app.route("/summary")
def summary():
d = make_summary()
# send it back as json
Send dataene fra oversigten til funktionen jsonify
, som returnerer et JSON-svar.
from flask import jsonify
@app.route('/summary')
def summary():
d = make_summary()
return jsonify(d)
Fra og med Flask 0.11 kan du videregive enhver JSON-serialiserbar type, ikke kun dict, som topniveauobjekt.
Overfør nøgleordsargumenter til flask.jsonify
, og de vil blive outputet som et JSON-objekt.
@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
}
Hvis du allerede har et dict, kan du sende det direkte som jsonify(d)
.
Hvis du vil analysere en fil, der er uploadet af brugeren, viser Flask quickstart, hvordan du henter filer fra brugere og får adgang til dem. Hent filen fra request.files
og send den til funktionen 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')
Udskift nøglen 'data'
for request.files
med navnet på filinput i din HTML-formular.