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

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.