Respuesta vacía intencional de Python Flask

98

¿Hay alguna forma de devolver una respuesta (de un make_response()objeto o similar) con ciertas propiedades para que no vuelva a representar la página y tampoco haga nada más? Estoy tratando de ejecutar un código en el servidor sin generar ningún resultado

Un simple 'return None' produce:

ValueError: View function did not return a response

Esto debería ser posible porque lo siguiente solo descarga un archivo y no representa la plantilla:

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

Respuestas:

170

Estás respondiendo a una solicitud, tu servidor HTTP debe devolver algo . La respuesta HTTP 'respuesta vacía' es 204 No Content:

return ('', 204)

Tenga en cuenta que devolver un archivo al navegador no es una respuesta vacía, solo es diferente de una respuesta HTML.

Martijn Pieters
fuente
13
Ftr: puede utilizar httplib.NO_CONTENTpara evitar el número mágico.
dtk
11
Tenga en cuenta que el equivalente de Python 2 httplib.NO_CONTENTen Python 3 es http.HTTPStatus.NO_CONTENT.
bfontaine
2
@bfontaine: ohttp.client.NO_CONTENT
Martijn Pieters
2
@bfontaine: en la parte inferior de los httpdocumentos del paquete ; estos solían ser la ubicación normal hasta que HTTPStatusse introdujo la enumeración, consulte github.com/python/cpython/commit/…
Martijn Pieters