플라스크 뷰에서 JSON 응답 반환
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=200
mimetype='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.dumps
JSON 데이터를 작성하기 위해 호출 한 후 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 형식의 파일 입력의 이름으로.
하지만이 flask.jsonify
쉽게 사용할 수 있지만 JSON 반환하는 장식을 사용하는 것을 선호합니다. 모든 json 유형을 반환하는 데 도움이되며 메소드에 여러 개의 반환 값이있을 때 더 읽기 쉽습니다. (이 샘플은 200 응답에 대해 작동하며 예외를 발생시키면서 오류를 반환합니다. Flask.errorhandler
)
def return_json(f):
@functools.wraps(f)
def inner(*a, **k):
return json.dumps(f(*a, **k))
return inner
@app.route('/test/<arg>')
@return_json
def test(arg):
if arg == 'list':
return [1, 2, 3]
elif arg == 'dict':
return {'a': 1, 'b': 2}
elif arg == 'bool':
return True
return 'non of them'
JSON 응답을 반환하고 상태 코드를 설정하려면 다음을 사용할 수 있습니다 make_response
.
from flask import jsonify, make_response
@app.route('/summary')
def summary():
d = make_summary()
return make_response(jsonify(d), 200)
Flask 이슈 트래커 의이 의견 에서 영감을 얻었습니다 .
Flask 0.11 이전에는 jsonfiy
배열을 직접 반환 할 수 없었습니다. 대신 목록을 키워드 인수로 전달하십시오.
@app.route('/get_records')
def get_records():
results = [
{
"rec_create_date": "12 Jun 2016",
"rec_dietary_info": "nothing",
"rec_dob": "01 Apr 1988",
"rec_first_name": "New",
"rec_last_name": "Guy",
},
{
"rec_create_date": "1 Apr 2016",
"rec_dietary_info": "Nut allergy",
"rec_dob": "01 Feb 1988",
"rec_first_name": "Old",
"rec_last_name": "Guy",
},
]
return jsonify(results=list)
참고 URL : https://stackoverflow.com/questions/13081532/return-json-response-from-flask-view
'development' 카테고리의 다른 글
페이지로드시 페이드 인 효과를 위해 CSS 사용 (0) | 2020.02.21 |
---|---|
자바 스크립트에서 문자열의 첫 문자 삭제 (0) | 2020.02.21 |
sprintf와 같은 std :: string 형식 (0) | 2020.02.21 |
문자열에서 HTML 태그 제거 (0) | 2020.02.21 |
GIT 오류를 수정하는 방법 : 개체 파일이 비어 있습니까? (0) | 2020.02.21 |