Функция after_this_request
Функция after_this_request применяется внутри функции-обработчика
запроса. Первым параметром передаётся функция, которая будет вызвана
после того, как Flask сформирует ответ на текущий запрос. Эта функция
принимает объект ответа response и должна вернуть его же
(возможно, изменённым). Обработчик выполняется только для текущего
запроса и не влияет на другие.
Синтаксис
after_this_request(func)
Пример
Давайте добавим заголовок к ответу после его формирования:
from flask import Flask, after_this_request
app = Flask(__name__)
@app.route('/')
def index():
@after_this_request
def add_header(response):
response.headers['X-Custom'] = 'abcde'
return response
return 'hello'
При запросе к адресу / в ответе появится заголовок
X-Custom со значением abcde, а тело ответа будет
содержать строку:
hello
Пример
Давайте изменим тело ответа в обработчике after_this_request:
from flask import Flask, after_this_request
app = Flask(__name__)
@app.route('/user')
def user():
@after_this_request
def modify_response(response):
response.set_data(response.get_data(as_text=True).upper())
return response
return 'abcde'
Результат выполнения кода:
ABCDE
Пример
Давайте зарегистрируем несколько обработчиков и посмотрим порядок их вызова:
from flask import Flask, after_this_request
app = Flask(__name__)
@app.route('/order')
def order():
@after_this_request
def first(response):
response.headers['X-First'] = '1'
return response
@after_this_request
def second(response):
response.headers['X-Second'] = '2'
return response
return 'article'
Оба заголовка X-First и X-Second будут добавлены
к ответу. Тело ответа останется прежним:
article
Смотрите также
-
функцию
make_response,
которая создаёт объект ответа вручную -
функцию
jsonify,
которая формирует JSON-ответ -
функцию
copy_current_request_context,
которая копирует контекст текущего запроса -
функцию
stream_with_context,
которая сохраняет контекст при потоковой передаче