Преднамеренный пустой ответ Python Flask


98

Есть ли способ вернуть ответ (от make_response()объекта или аналогичного) с определенными свойствами, чтобы он не отображал страницу снова и не делал ничего другого. Я пытаюсь запустить код на сервере без вывода каких-либо результатов

Простое «return None» дает:

ValueError: View function did not return a response

Это должно быть возможно, потому что следующее только загружает файл и не отображает шаблон:

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

Ответы:


171

Вы отвечаете на запрос, ваш HTTP-сервер должен что-то вернуть . HTTP-ответ "пустой ответ" 204 No Content:

return ('', 204)

Обратите внимание, что возврат файла в браузер не является пустым ответом, а просто отличается от ответа HTML.


14
Ftr: вы можете использовать, httplib.NO_CONTENTчтобы избежать магического числа.
dtk

11
Обратите внимание, что эквивалент Python 2 httplib.NO_CONTENTв Python 3 равен http.HTTPStatus.NO_CONTENT.
bfontaine

2
@bfontaine: orhttp.client.NO_CONTENT
Мартин Питерс

2
@bfontaine: внизу httpдокументации пакета ; они используются , чтобы быть нормальным местом , пока HTTPStatusперечисление не было введено, см github.com/python/cpython/commit/...
Мартейн Питерс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.