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
RukTech
sumber

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.

Martijn Pieters
sumber
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