카테고리 보관물: Python

Python

플라스크 뷰에서 JSON 응답 반환 CSV 파일을 분석하고 요약 정보가있는

Pandas로 CSV 파일을 분석하고 요약 정보가있는 dict를 생성하는 기능이 있습니다. Flask보기의 응답으로 결과를 반환하고 싶습니다. JSON 응답을 어떻게 반환합니까?

@app.route("/summary")
def summary():
    d = make_summary()
    # send it back as json


답변

요약 데이터를 jsonify함수에 전달하면 JSON 응답이 리턴됩니다.

from flask import jsonify

@app.route('/summary')
def summary():
    d = make_summary()
    return jsonify(d)

Flask 0.11부터 dict뿐만 아니라 모든 JSON 직렬화 가능 유형을 최상위 레벨 오브젝트로 전달할 수 있습니다.


답변

jsonify전달한 데이터를 JSON으로 직렬화합니다. 데이터를 직접 직렬화하려면 and jsonify로 응답을 작성하여 수행하는 작업을 수행하십시오 .status=200mimetype='application/json'

from flask import json

@app.route('/summary')
def summary():
    data = make_summary()
    response = app.response_class(
        response=json.dumps(data),
        status=200,
        mimetype='application/json'
    )
    return response

답변

키워드 인수를 전달 flask.jsonify하면 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
}

이미 dict을 가지고 있다면으로 직접 전달할 수 있습니다 jsonify(d).


답변

jsonify어떤 이유로 사용하지 않으려 는 경우 수동으로 수행 할 수 있습니다. flask.json.dumpsJSON 데이터를 작성하기 위해 호출 한 후 application/json컨텐츠 유형 으로 응답을 리턴하십시오 .

from flask import json

@app.route('/summary')
def summary():
    data = make_summary()
    response = app.response_class(
        response=json.dumps(data),
        mimetype='application/json'
    )
    return response

flask.json내장 json모듈 과 다릅니다 . 사용 simplejson가능한 경우 더 빠른 모듈 을 사용하며 Flask 앱과 다양한 통합이 가능합니다.


답변

사용자가 업로드 한 파일을 분석하려는 경우 Flask 빠른 시작 은 사용자로부터 파일을 가져오고 액세스하는 방법을 보여줍니다. 파일을 가져 request.files와서 요약 함수에 전달하십시오.

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')

바꾸기 'data'위해 키를 request.files당신의 HTML 형식의 파일 입력의 이름으로.


답변

JSON 응답을 반환하고 상태 코드를 설정하려면 다음을 사용할 수 있습니다 make_response.

from flask import jsonify, make_response

@app.route('/summary')
def summary():
    d = make_summary()
    return make_response(jsonify(d), 200)

Flask 이슈 트래커 의이 의견 에서 영감을 얻었습니다 .


답변

버전 1.1.0 Flask부터 뷰가 dict를 반환하면 JSON 응답으로 바뀝니다 .

@app.route("/users", methods=['GET'])
def get_user():
    return {
        "user": "John Doe",
    }