Respons Kosong Disengaja Python Flask


98

Apakah ada cara untuk mengembalikan respons (dari make_response()objek atau serupa) dengan properti tertentu sehingga tidak merender halaman lagi dan juga tidak melakukan hal lain. Saya mencoba menjalankan kode di server tanpa menghasilkan output apa pun

Sebuah 'return None' sederhana menghasilkan:

ValueError: View function did not return a response

Ini dapat dilakukan karena yang berikut ini hanya mengunduh file dan tidak merender template:

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

Jawaban:


171

Anda menanggapi permintaan, server HTTP Anda harus mengembalikan sesuatu . Respons 'respons kosong' HTTP adalah 204 No Content:

return ('', 204)

Perhatikan bahwa mengembalikan file ke browser bukanlah respons kosong, hanya berbeda dari respons HTML.


14
Ftr: Anda dapat menggunakan httplib.NO_CONTENTuntuk menghindari angka ajaib.
dtk

11
Perhatikan bahwa persamaan Python 2 httplib.NO_CONTENTdi Python 3 adalah http.HTTPStatus.NO_CONTENT.
bfontaine

2
@bfontaine: atauhttp.client.NO_CONTENT
Martijn Pieters

2
@bfontaine: di bagian bawah httpdokumen paket ; ini dulunya adalah lokasi normal sampai HTTPStatusenum diperkenalkan, lihat github.com/python/cpython/commit/…
Martijn Pieters
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.