Jeg har en funksjon som analyserer en CSV-fil med Pandas og produserer en diktat med sammendragsinformasjon. Jeg ønsker å returnere resultatene 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 sammendragsdataene til funksjonen 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 sende en hvilken som helst JSON-serialiserbar type, ikke bare dict, som toppnivåobjekt.
Send nøkkelordargumenter til flask.jsonify
, og de vil bli skrevet ut 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 en dict, kan du sende den direkte som jsonify(d)
.
Hvis du vil analysere en fil som er lastet opp av brukeren, viser Flask quickstart hvordan du henter filer fra brukere og får tilgang til dem. Hent filen fra request.files
og send den til oppsummeringsfunksjonen.
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')
Erstatt nøkkelen 'data'
for request.files
med navnet på filen som er lagt inn i HTML-skjemaet.