Saya memiliki fungsi yang menganalisis file CSV dengan Pandas dan menghasilkan dict dengan informasi ringkasan. Saya ingin mengembalikan hasilnya sebagai tanggapan dari tampilan Flask. Bagaimana cara mengembalikan respons JSON?
@app.route("/summary")
def summary():
d = make_summary()
# send it back as json
jsonify
membuat serialisasi data yang Anda berikan ke JSON. Jika Anda ingin membuat serialisasi data sendiri, lakukan apa yangjsonify
dilakukan dengan membangun respons denganstatus=200
danmimetype='application/json'
.sumber
Lewati argumen kata kunci
flask.jsonify
dan akan ditampilkan sebagai objek JSON.Jika Anda sudah memiliki dict, Anda dapat meneruskannya langsung sebagai
jsonify(d)
.sumber
Jika Anda tidak ingin menggunakan
jsonify
karena suatu alasan, Anda dapat melakukan apa yang dilakukan secara manual. Panggilflask.json.dumps
untuk membuat data JSON, lalu kembalikan respons denganapplication/json
tipe konten.flask.json
berbeda darijson
modul bawaan. Ini akan menggunakansimplejson
modul yang lebih cepat jika tersedia, dan memungkinkan berbagai integrasi dengan aplikasi Flask Anda.sumber
Jika Anda ingin menganalisis file yang diunggah oleh pengguna, quickstart Flask menunjukkan cara mendapatkan file dari pengguna dan mengaksesnya. Dapatkan file dari
request.files
dan berikan ke fungsi ringkasan.Ganti
'data'
kuncirequest.files
dengan nama input file dalam formulir HTML Anda.sumber
Untuk mengembalikan respons JSON dan menetapkan kode status yang dapat Anda gunakan
make_response
:Inspirasi diambil dari komentar ini dalam pelacak isu Flask.
sumber
Pada versi 1.1.0 Flask, jika tampilan mengembalikan dict itu akan berubah menjadi respons JSON .
sumber
Saya menggunakan dekorator untuk mengembalikan hasilnya
jsonfiy
. Saya pikir ini lebih mudah dibaca ketika tampilan memiliki beberapa pengembalian. Ini tidak mendukung pengembalian tuple likecontent, status
, tetapi saya menangani pengembalian status kesalahan denganapp.errorhandler
gantinya.sumber
Sebelum ke Flask 0.11,
jsonfiy
tidak akan memungkinkan pengembalian array secara langsung. Alih-alih, sampaikan daftar sebagai argumen kata kunci.sumber
Di Flask 1.1, jika Anda mengembalikan kamus dan kamus itu akan secara otomatis dikonversi ke JSON. Jadi, jika
make_summary()
mengembalikan kamus, Anda bisaThe SO yang menanyakan tentang termasuk kode status ditutup sebagai duplikat yang satu ini. Jadi untuk juga menjawab pertanyaan itu, Anda bisa memasukkan kode status dengan mengembalikan tuple formulir
(dict, int)
. Inidict
dikonversi ke JSON danint
akan menjadi Kode Status HTTP. Tanpa input apa pun, Status adalah default 200. Jadi dalam contoh di atas kode akan menjadi 200. Dalam contoh di bawah ini diubah menjadi 201.Anda dapat memeriksa kode status menggunakan
sumber
jika ini adalah dict, flask dapat mengembalikannya secara langsung (Versi 1.0.2)
sumber
"" " Menggunakan Flask Class-base View " ""
sumber
Labu 1.1.x
sekarang permintaan dukungan Flask kembali dengan json secara langsung, jsonify tidak diperlukan lagi
setara dengan
untuk informasi lebih lanjut baca di sini https://medium.com/octopus-wealth/returning-json-from-flask-cf4ce6fe9aeb dan https://github.com/pallets/flask/pull/3111
sumber