Преднамеренный пустой ответ 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/...
Мартейн Питерс