Absichtliche leere Antwort von Python Flask

98

Gibt es eine Möglichkeit, eine Antwort (von einem make_response()Objekt oder ähnlichem) mit bestimmten Eigenschaften zurückzugeben, damit die Seite nicht erneut gerendert wird und auch nichts anderes ausgeführt wird. Ich versuche, einen Code auf dem Server auszuführen, ohne eine Ausgabe zu generieren

Eine einfache 'return None' erzeugt:

ValueError: View function did not return a response

Dies sollte möglich sein, da im Folgenden nur eine Datei heruntergeladen und die Vorlage nicht gerendert wird:

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

Antworten:

170

Sie sind auf eine Anfrage reagiert, HTTP - Server muss zurückkehren etwas . Die HTTP-Antwort "leere Antwort" lautet 204 No Content:

return ('', 204)

Beachten Sie, dass das Zurückgeben einer Datei an den Browser keine leere Antwort ist, sondern sich nur von einer HTML-Antwort unterscheidet.

Martijn Pieters
quelle
13
Ftr: Sie können verwenden httplib.NO_CONTENT, um die magische Zahl zu vermeiden.
dtk
11
Beachten Sie, dass das Äquivalent von Python 2 httplib.NO_CONTENTin Python 3 ist http.HTTPStatus.NO_CONTENT.
Bfontaine
2
@bfontaine: oderhttp.client.NO_CONTENT
Martijn Pieters
2
@bfontaine: an der Unterseite der httpVerpackung docs ; diese verwendeten die normale Lage sein , bis der HTTPStatusEnum eingeführt wurde, siehe github.com/python/cpython/commit/...
Martijn Pieters