Python Flask Celowo pusta odpowiedź


98

Czy istnieje sposób na zwrócenie odpowiedzi (z make_response()obiektu lub podobnej) z określonymi właściwościami, aby nie renderowała ponownie strony i nie robiła też nic innego. Próbuję uruchomić kod na serwerze bez generowania żadnych danych wyjściowych

Prosty zwrot „Brak” daje:

ValueError: View function did not return a response

Powinno to być możliwe, ponieważ poniższe czynności tylko pobierają plik i nie renderują szablonu:

myString = "First line of a document"
response = make_response(myString)
response.headers["Content-Disposition"] = "attachment; filename=myFile.txt"
return response

Odpowiedzi:


171

Odpowiadasz na żądanie, Twój serwer HTTP musi coś zwrócić . Odpowiedź HTTP „Pusta odpowiedź” to 204 No Content:

return ('', 204)

Zwróć uwagę, że zwrot pliku do przeglądarki nie jest pustą odpowiedzią, różni się tylko od odpowiedzi HTML.


14
Ftr: możesz użyć, httplib.NO_CONTENTaby uniknąć magicznej liczby.
dtk

11
Zauważ, że odpowiednikiem Pythona 2 httplib.NO_CONTENTw Pythonie 3 jest http.HTTPStatus.NO_CONTENT.
bfontaine

2
@bfontaine: lubhttp.client.NO_CONTENT
Martijn Pieters

2
@bfontaine: na dole httpdokumentacji pakietu ; te stosuje się normalne położenie aż HTTPStatuswprowadzono wyliczenia patrz github.com/python/cpython/commit/...
Martijn Pieters
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.