Risposta vuota intenzionale del pallone Python


98

C'è un modo per restituire una risposta (da un make_response()oggetto o simile) con determinate proprietà in modo che non renda nuovamente la pagina e non faccia nient'altro. Sto cercando di eseguire un codice sul server senza generare alcun output

Un semplice 'return None' produce:

ValueError: View function did not return a response

Ciò dovrebbe essere possibile perché quanto segue scarica solo un file e non esegue il rendering del modello:

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

Risposte:


171

Stai rispondendo a una richiesta, il tuo server HTTP deve restituire qualcosa . La risposta HTTP "risposta vuota" è 204 No Content:

return ('', 204)

Tieni presente che la restituzione di un file al browser non è una risposta vuota, ma solo diversa da una risposta HTML.


14
Ftr: puoi usare httplib.NO_CONTENTper evitare il numero magico.
dtk

11
Nota che l'equivalente di Python 2 httplib.NO_CONTENTin Python 3 è http.HTTPStatus.NO_CONTENT.
bfontaine

2
@bfontaine: orhttp.client.NO_CONTENT
Martijn Pieters

2
@bfontaine: in fondo alla httpdocumentazione del pacchetto ; questi erano la posizione normale fino HTTPStatusall'introduzione dell'enum
Martijn Pieters
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.