Метод request_context
Метод request_context применяется к приложению Flask
и возвращает объект контекста запроса. Этот контекст
позволяет вручную установить окружение запроса, чтобы
работать с request, session и g
без реального HTTP-запроса. Первым параметром передаётся
объект окружения WSGI, вторым - необязательный объект
запроса Request. Контекст можно использовать как
контекстный менеджер или вызывать методы push
и pop вручную.
Синтаксис
app.request_context(environ, [request])
Пример
Давайте создадим контекст запроса и получим путь
из объекта request:
from flask import Flask, request
app = Flask(__name__)
environ = {
'REQUEST_METHOD': 'GET',
'PATH_INFO': '/abcde',
'SERVER_NAME': 'localhost',
'SERVER_PORT': '5000',
'wsgi.url_scheme': 'http',
'wsgi.input': None,
'wsgi.errors': None,
'wsgi.version': (1, 0),
'wsgi.multithread': False,
'wsgi.multiprocess': False,
'wsgi.run_once': False,
}
with app.request_context(environ):
res = request.path
print(res)
Результат выполнения кода:
'/abcde'
Пример
Давайте вручную вызовем методы push и
pop контекста запроса:
from flask import Flask, request
app = Flask(__name__)
environ = {
'REQUEST_METHOD': 'GET',
'PATH_INFO': '/user',
'SERVER_NAME': 'localhost',
'SERVER_PORT': '5000',
'wsgi.url_scheme': 'http',
'wsgi.input': None,
'wsgi.errors': None,
'wsgi.version': (1, 0),
'wsgi.multithread': False,
'wsgi.multiprocess': False,
'wsgi.run_once': False,
}
ctx = app.request_context(environ)
ctx.push()
res = request.method
ctx.pop()
print(res)
Результат выполнения кода:
'GET'
Смотрите также
-
метод
app_context,
который создаёт контекст приложения -
метод
test_request_context,
который создаёт контекст запроса из аргументов -
метод
wsgi_app,
который вызывает приложение как WSGI-обработчик -
метод
test_client,
который создаёт клиент для тестирования запросов