Réponse vide intentionnelle de Python Flask

98

Existe-t-il un moyen de renvoyer une réponse (à partir d'un make_response()objet ou similaire) avec certaines propriétés afin qu'elle ne rende pas à nouveau la page et ne fasse rien d'autre non plus. J'essaie d'exécuter un code sur le serveur sans générer de sortie

Un simple 'return None' produit:

ValueError: View function did not return a response

Cela devrait être possible car ce qui suit télécharge uniquement un fichier et ne rend pas le modèle:

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

Réponses:

170

Vous répondez à une requête, votre serveur HTTP doit renvoyer quelque chose . La réponse HTTP «réponse vide» est 204 No Content:

return ('', 204)

Notez que renvoyer un fichier au navigateur n'est pas une réponse vide, juste différente d'une réponse HTML.

Martijn Pieters
la source
13
Ftr: vous pouvez utiliser httplib.NO_CONTENTpour éviter le nombre magique.
dtk le
11
Notez que l'équivalent de Python 2 httplib.NO_CONTENTdans Python 3 est http.HTTPStatus.NO_CONTENT.
bfontaine
2
@bfontaine: orhttp.client.NO_CONTENT
Martijn Pieters
2
@bfontaine: en bas de la httpdocumentation du package ; ceux - ci utilisés pour être l'emplacement normal jusqu'à ce que le HTTPStatusENUM a été introduite, voir github.com/python/cpython/commit/...
Martijn Pieters