У меня есть функция, которая анализирует CSV-файл с помощью Pandas и выдает отчет со сводной информацией. Я хочу вернуть результаты как ответ от представления Flask. Как вернуть ответ JSON?
@app.route("/summary")
def summary():
d = make_summary()
# send it back as json
jsonify
сериализует данные, которые вы передаете в JSON. Если вы хотите сериализовать данные самостоятельно, сделайте то, чтоjsonify
делает, создав ответ с помощьюstatus=200
иmimetype='application/json'
.источник
Передайте аргументы ключевых слов,
flask.jsonify
и они будут выведены в виде объекта JSON.Если у вас уже есть диктат, вы можете передать его напрямую как
jsonify(d)
.источник
Если вы не хотите использовать
jsonify
по какой-либо причине, вы можете сделать то, что он делает вручную. Вызовитеflask.json.dumps
для создания данных JSON, а затем верните ответ сapplication/json
типом содержимого.flask.json
отличается от встроенногоjson
модуля. Он будет использовать более быстрыйsimplejson
модуль, если он доступен, и разрешает различные интеграции с вашим приложением Flask.источник
Если вы хотите проанализировать файл, загруженный пользователем, быстрый старт Flask покажет, как получить файлы от пользователей и получить к ним доступ. Получить файл
request.files
и передать его в функцию сводки.Замените
'data'
ключ наrequest.files
именем файла, введенного в вашу HTML-форму.источник
Чтобы вернуть ответ JSON и установить код состояния, вы можете использовать
make_response
:Вдохновение взято из этого комментария в трекере Flask.
источник
Начиная с версии 1.1.0 Flask, если представление возвращает dict, оно будет превращено в ответ JSON .
источник
Я использую декоратор, чтобы вернуть результат
jsonfiy
. Я думаю, что это более читабельно, когда представление имеет несколько возвращений. Это не поддерживает возврат типа кортежаcontent, status
, ноapp.errorhandler
вместо этого я обрабатываю возвращение статусов ошибок .источник
До Flask 0.11
jsonfiy
не разрешал бы возвращать массив напрямую. Вместо этого передайте список в качестве аргумента ключевого слова.источник
В Flask 1.1, если вы возвращаете словарь, и он будет автоматически преобразован в JSON. Так что, если
make_summary()
возвращает словарь, вы можетеSO , который просит о включении код состояния был закрыт в двух экземплярах на этот. Таким образом, чтобы также ответить на этот вопрос, вы можете включить код состояния, возвращая кортеж формы
(dict, int)
.dict
Преобразуется в формат JSON иint
будет HTTP Status Code. Без какого-либо ввода Status является значением по умолчанию 200. Таким образом, в приведенном выше примере код будет 200. В приведенном ниже примере он изменяется на 201.Вы можете проверить код состояния, используя
источник
если это диктует, колба может вернуть его напрямую (версия 1.0.2)
источник
"" " Использование Flask Class-base View " ""
источник
Колба 1.1.x
Теперь запрос поддержки Flask возвращается напрямую через json, jsonify больше не требуется.
эквивалентно
для получения дополнительной информации читайте здесь https://medium.com/octopus-wealth/returning-json-from-flask-cf4ce6fe9aeb и https://github.com/pallets/flask/pull/3111.
источник