Python Flask การตอบสนองที่ว่างเปล่าโดยเจตนา


99

มีวิธีส่งคืนการตอบกลับ (จากmake_response()วัตถุหรือสิ่งที่คล้ายกัน) ด้วยคุณสมบัติบางอย่างหรือไม่เพื่อไม่ให้แสดงหน้าเว็บอีกครั้งและไม่ทำอย่างอื่นด้วย ฉันพยายามรันโค้ดบนเซิร์ฟเวอร์โดยไม่สร้างเอาต์พุตใด ๆ

'return None' ที่เรียบง่ายก่อให้เกิด:

ValueError: View function did not return a response

สิ่งนี้น่าจะเป็นไปได้เนื่องจากสิ่งต่อไปนี้จะดาวน์โหลดเฉพาะไฟล์และไม่แสดงเทมเพลต:

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

คำตอบ:


175

คุณจะตอบสนองต่อคำขอเซิร์ฟเวอร์ HTTP ของคุณจะต้องกลับมาบางสิ่งบางอย่าง การตอบสนอง 'การตอบกลับที่ว่างเปล่า' ของ HTTP คือ204 No Content:

return ('', 204)

โปรดทราบว่าการส่งคืนไฟล์ไปยังเบราว์เซอร์ไม่ใช่การตอบกลับที่ว่างเปล่าแตกต่างจากการตอบกลับ HTML


14
Ftr: คุณอาจใช้httplib.NO_CONTENTเพื่อหลีกเลี่ยงเลขวิเศษ
dtk

11
หมายเหตุเทียบเท่าของงูใหญ่ 2 ของhttplib.NO_CONTENTในหลาม http.HTTPStatus.NO_CONTENT3
bfontaine

2
@bfontaine: หรือhttp.client.NO_CONTENT
Martijn Pieters

2
@bfontaine: ที่ด้านล่างของhttpเอกสารแพ็คเกจ ; สิ่งเหล่านี้เคยเป็นตำแหน่งปกติจนกระทั่งมีการHTTPStatusเปิดตัว enum โปรดดูที่github.com/python/cpython/commit/…
Martijn Pieters
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.