Mam funkcję, która analizuje plik CSV za pomocą Pandas i tworzy dykt z informacjami podsumowującymi. Chcę zwrócić wyniki jako odpowiedź z widoku Flask. Jak zwrócić odpowiedź JSON?
@app.route("/summary")
def summary():
d = make_summary()
# send it back as json
jsonify
serializuje dane, które przekazujesz do JSON. Jeśli chcesz samodzielnie szeregować dane, zrób tojsonify
, budując odpowiedź za pomocąstatus=200
imimetype='application/json'
.źródło
Przekaż argumenty słów kluczowych do,
flask.jsonify
a zostaną one wygenerowane jako obiekt JSON.Jeśli masz już dykt, możesz przekazać go bezpośrednio jako
jsonify(d)
.źródło
Jeśli
jsonify
z jakiegoś powodu nie chcesz używać , możesz zrobić to, co robi ręcznie. Zadzwoń,flask.json.dumps
aby utworzyć dane JSON, a następnie zwróć odpowiedź zapplication/json
typem treści.flask.json
różni się od wbudowanegojson
modułu. Będzie korzystał z szybszegosimplejson
modułu, jeśli jest dostępny, i umożliwia różne integracje z aplikacją Flask.źródło
Jeśli chcesz przeanalizować plik przesłany przez użytkownika, Szybki start Flask pokazuje, jak uzyskać pliki od użytkowników i uzyskać do nich dostęp. Pobierz plik
request.files
i przekaż go do funkcji podsumowania.Zamień
'data'
klucz narequest.files
na nazwę pliku wejściowego w formularzu HTML.źródło
Aby zwrócić odpowiedź JSON i ustawić kod stanu, możesz użyć
make_response
:Inspiracja zaczerpnięta z tego komentarza w narzędziu do śledzenia problemów Flask.
źródło
Począwszy od wersji 1.1.0 Flask, widok zwróci dict, zostanie przekształcony w odpowiedź JSON .
źródło
Używam dekoratora, aby zwrócić wynik
jsonfiy
. Myślę, że jest bardziej czytelny, gdy widok ma wiele zwrotów. Nie obsługuje to zwracania krotkicontent, status
, aleapp.errorhandler
zamiast tego obsługuję zwracanie stanów błędów .źródło
Przed Flask 0.11
jsonfiy
nie pozwalał bezpośrednio zwrócić tablicy. Zamiast tego przekaż listę jako argument słowa kluczowego.źródło
W Flask 1.1, jeśli zwrócisz słownik i zostanie on automatycznie przekonwertowany na JSON. Jeśli więc
make_summary()
zwróci słownik, możeszSO, że pyta o tym kod statusu został zamknięty jako duplikat do tego. Aby odpowiedzieć na to pytanie, możesz dołączyć kod statusu, zwracając krotkę formularza
(dict, int)
.dict
Przekształca JSON iint
będzie kodu stanu HTTP. Bez żadnych danych Status ma domyślną wartość 200. Zatem w powyższym przykładzie kod będzie wynosił 200. W poniższym przykładzie zmieniono go na 201.Możesz sprawdzić kod stanu za pomocą
źródło
jeśli to dykt, kolba może zwrócić go bezpośrednio (wersja 1.0.2)
źródło
„” „ Korzystanie z widoku podstawowego klasy Flask ” „”
źródło
Kolba 1.1.x
teraz prośba o wsparcie dla Flask powraca bezpośrednio z json, jsonify nie jest już wymagany
jest równa
Aby uzyskać więcej informacji, przeczytaj tutaj https://medium.com/octopus-wealth/returning-json-from-flask-cf4ce6fe9aeb i https://github.com/pallets/flask/pull/3111
źródło