API
В этой части документации описаны все интерфейсы Flask. В разделах, где Flask зависит от внешних библиотек, мы документируем наиболее важные моменты и предоставляем ссылки на официальную документацию.
Объект приложения
-
class flask.Flask(import_name, static_url_path=None, static_folder='static', static_host=None, host_matching=False, subdomain_matching=False, template_folder='templates', instance_path=None, instance_relative_config=False, root_path=None) -
Объект flask реализует приложение WSGI и является центральным объектом. Ему передаётся имя модуля или пакета приложения. После создания он будет служить центральным регистром для функций-представлений, правил URL, конфигурации шаблонов и многого другого.
Имя пакета используется для разрешения ресурсов изнутри пакета или папки, содержащей модуль, в зависимости от того, является ли параметр package фактическим пакетом Python (папка с файлом
__init__.pyвнутри) или стандартным модулем (только файл.py).Дополнительную информацию о загрузке ресурсов см. в
open_resource().Обычно вы создаёте экземпляр
Flaskв главном модуле или в файле__init__.pyвашего пакета, как показано ниже:from flask import Flask app = Flask(__name__)
О первом параметре
Идея первого параметра — дать Flask представление о том, что относится к вашему приложению. Это имя используется для поиска ресурсов в файловой системе, может использоваться расширениями для улучшения информации об отладке и многого другого.
Поэтому важно, что вы передадите. Если вы используете один модуль,
__name__— всегда правильное значение. Однако если вы используете пакет, рекомендуется жёстко закодировать в нём имя вашего пакета.Например, если ваше приложение определено в
yourapplication/app.py, вы должны создать его с одной из двух версий ниже:app = Flask('yourapplication') app = Flask(__name__.split('.')[0])Почему так? Приложение будет работать даже с
__name__, благодаря тому, как выполняются запросы к ресурсам. Однако это усложнит отладку. Некоторые расширения могут делать предположения, основанные на имени импорта вашего приложения. Например, расширение Flask-SQLAlchemy будет искать в коде вашего приложения, который вызвал запрос SQL в режиме отладки. Если имя импорта не настроено должным образом, эта информация об отладке теряется. (Например, он будет подбирать запросы SQL только вyourapplication.appи не вyourapplication.views.frontend).Журнал изменений
Добавлена в версии 1.0: Были добавлены параметры
host_matchingиstatic_host.Добавлена в версии 1.0: Был добавлен параметр
subdomain_matching. Соответствие поддоменам теперь необходимо включать вручную. УстановкаSERVER_NAMEне подразумевает его включение.Добавлена в версии 0.11: Был добавлен параметр
root_path.Добавлена в версии 0.8: Были добавлены параметры
instance_pathиinstance_relative_config.Добавлена в версии 0.7: Были добавлены параметры
static_url_path,static_folderиtemplate_folder.- Параметры:
-
- import_name (str) — имя пакета приложения
-
static_url_path (str | None) — можно использовать для указания другого пути к статическим файлам в сети. По умолчанию используется имя папки
static_folder. -
static_folder (str | os.PathLike[str] | None) — папка со статическими файлами, которая обслуживается по адресу
static_url_path. Относительно корня приложенияroot_pathили абсолютный путь. По умолчанию'static'. -
static_host (str | None) — хост для использования при добавлении статического маршрута. По умолчанию None. Требуется при использовании
host_matching=Trueс настроеннымstatic_folder. -
host_matching (bool) — установить значение атрибута
url_map.host_matching. По умолчанию False. -
subdomain_matching (bool) — учитывать поддомен относительно
SERVER_NAMEпри сопоставлении маршрутов. По умолчанию False. -
template_folder (str | os.PathLike[str] | None) — папка, содержащая шаблоны, которые следует использовать для приложения. По умолчанию папка
'templates'в корне приложения. -
instance_path (str | None) — альтернативный путь к экземпляру приложения. По умолчанию предполагается, что папка
'instance'рядом с пакетом или модулем является путём экземпляра. -
instance_relative_config (bool) — если установлено в
True, относительные имена файлов для загрузки конфигурации предполагаются относительными к пути экземпляра, а не к корню приложения. - root_path (str | None) — путь к корню файлов приложения. Это нужно задавать вручную только в тех случаях, когда его невозможно определить автоматически, например, для пакетов с именованными пространствами.
-
request_class -
псевдоним
Request
-
response_class -
псевдоним
Response
-
session_interface: SessionInterface = <flask.sessions.SecureCookieSessionInterface object> -
интерфейс сессии для использования. По умолчанию используется экземпляр
SecureCookieSessionInterface.Журнал изменений
Добавлена в версии 0.8.
-
cli: Group -
Группа команд Click для регистрации команд командной строки для этого объекта. Команды доступны из команды
flaskпосле обнаружения приложения и регистрации планов.
-
get_send_file_max_age(filename) -
Используется
send_file()для определения значения кэшаmax_ageдля данного пути к файлу, если оно не было передано.По умолчанию возвращает значение
SEND_FILE_MAX_AGE_DEFAULTиз конфигурацииcurrent_app. По умолчанию этоNone, что сообщает браузеру использовать условные запросы вместо кэша по времени, что обычно предпочтительнее.Обратите внимание, что это дубликат того же метода в классе Flask.
Журнал изменений
Изменено в версии 2.0: Значение конфигурации по умолчанию —
None, а не 12 часов.Добавлена в версии 0.9.
-
send_static_file(filename) -
Функция-представление для обработки запросов на статические файлы из папки
static_folder. Маршрут для этой функции автоматически регистрируется по адресуstatic_url_path, еслиstatic_folderзадана.Обратите внимание, что это дубликат той же функции в классе Flask.
Журнал изменений
Добавлена в версии 0.5.
-
open_resource(resource, mode='rb', encoding=None) -
Открывает файл ресурса, относящийся к
root_path, для чтения.Например, если файл
schema.sqlнаходится рядом с файломapp.py, где определенFlaskприложение, его можно открыть следующим образом:with app.open_resource("schema.sql") as f: conn.executescript(f.read())- Параметры:
-
-
resource (строка) – Путь к ресурсу относительно
root_path. -
mode (строка) – Режим открытия файла. Поддерживается только чтение, допустимые значения –
"r"(или"rt") и"rb". - encoding (строка | None) – Кодировка открытия файла при открытии в текстовом режиме. Игнорируется при открытии в бинарном режиме.
-
resource (строка) – Путь к ресурсу относительно
- Тип возвращаемого значения:
Изменено в версии 3.1: Добавлен параметр
encoding.
-
open_instance_resource(resource, mode='rb', encoding='utf-8') -
Открывает файл ресурса, относящийся к папке экземпляра приложения
instance_path. В отличие отopen_resource(), файлы в папке экземпляра можно открывать для записи.- Параметры:
-
-
resource (строка) – Путь к ресурсу относительно
instance_path. - mode (строка) – Режим открытия файла.
- encoding (строка | None) – Кодировка открытия файла при открытии в текстовом режиме. Игнорируется при открытии в бинарном режиме.
-
resource (строка) – Путь к ресурсу относительно
- Тип возвращаемого значения:
Изменено в версии 3.1: Добавлен параметр
encoding.
-
create_jinja_environment() -
Создаёт среду Jinja на основе
jinja_optionsи различных методов приложения, связанных с Jinja. Изменениеjinja_optionsпосле этого не повлияет. Также добавляет глобальные переменные и фильтры, относящиеся к Flask, в среду.Журнал изменений
Изменено в версии 0.11:
Environment.auto_reloadустанавливается в соответствии с параметром конфигурацииTEMPLATES_AUTO_RELOAD.Добавлена в версии 0.5.
- Тип возвращаемого значения:
-
Среда
-
create_url_adapter(request) -
Создаёт адаптер URL для данного запроса. Адаптер URL создаётся в момент, когда контекст запроса ещё не настроен, поэтому запрос передаётся явно.
Изменено в версии 3.1: Если
SERVER_NAMEзадан, он не ограничивает запросы только указанным доменом, как дляsubdomain_matchingтак и дляhost_matching.Журнал изменений
Изменено в версии 1.0:
SERVER_NAMEбольше не неявно включает сопоставление поддоменов. Используйтеsubdomain_matchingвместо этого.Изменено в версии 0.9: Его можно вызвать вне контекста запроса, когда адаптер URL создаётся для контекста приложения.
Добавлена в версии 0.6.
- Параметры:
-
request (Request | None)
- Тип возвращаемого значения:
-
MapAdapter | None
-
update_template_context(context) -
Обновляет контекст шаблона с использованием некоторых часто используемых переменных. Это вставляет request, session, config и g в контекст шаблона, а также всё, что процессоры контекста шаблонов хотят добавить. Обратите внимание, что начиная с Flask 0.6, исходные значения в контексте не будут перезаписаны, если процессор контекста решит вернуть значение с тем же ключом.
-
-
run(host=None, port=None, debug=None, load_dotenv=True, **options) -
Запускает приложение на локальном сервере разработки.
Не используйте
run()в рабочей среде. Она не предназначена для обеспечения требований безопасности и производительности для сервера рабочей среды. Вместо этого см. Развертывание в рабочей среде для рекомендаций по WSGI-серверам.Если флаг
debugустановлен, сервер автоматически перезагрузится при изменении кода и покажет отладчик в случае возникновения исключения.Если вы хотите запустить приложение в режиме отладки, но отключить выполнение кода в интерактивном отладчике, вы можете передать
use_evalex=Falseв качестве параметра. Это сохранит активный экран отслеживания ошибок отладчика, но отключит выполнение кода.Не рекомендуется использовать эту функцию для разработки с автоматической перезагрузкой, так как она плохо поддерживается. Вместо этого вы должны использовать командную строку flask и ее поддержку
run.Обратите внимание
Flask будет подавлять любые ошибки сервера с помощью универсальной страницы с ошибкой, если только это не режим отладки. Таким образом, для включения только интерактивного отладчика без перезагрузки кода, необходимо вызвать
run()сdebug=Trueиuse_reloader=False. Установкаuse_debuggerнаTrueбез включения режима отладки не перехватит исключения, поскольку их не будет.- Parameters:
-
-
host (str | None) – имя хоста для прослушивания. Установите это значение на
'0.0.0.0'чтобы сервер был доступен также извне. По умолчанию'127.0.0.1'или хост из переменной конфигурацииSERVER_NAMEесли она присутствует. -
port (int | None) – порт веб-сервера. По умолчанию
5000или порт, определенный в переменной конфигурацииSERVER_NAMEесли она присутствует. -
debug (bool | None) – если задано, включить или выключить режим отладки. См.
debug. -
load_dotenv (bool) – Загрузить ближайшие файлы
.envи.flaskenvдля установки переменных окружения. Также изменит рабочую директорию на директорию, содержащую первый найденный файл. -
options (Any) – опции, которые будут переданы в основной сервер Werkzeug. Смотрите
werkzeug.serving.run_simple()для получения дополнительной информации.
-
host (str | None) – имя хоста для прослушивания. Установите это значение на
- Return type:
-
None
Журнал изменений
Изменено в версии 1.0: Если установлен, python-dotenv будет использоваться для загрузки переменных окружения из файлов
.envи.flaskenv.Переменная окружения
FLASK_DEBUGпереопределитdebug.Режим с потоками включен по умолчанию.
Изменено в версии 0.10: Порт по умолчанию теперь выбирается из переменной
SERVER_NAME.
-
test_client(use_cookies=True, **kwargs) -
Создает тестовый клиент для данного приложения. Для получения информации о модульном тестировании перейдите на страницу Тестирование приложений Flask.
Обратите внимание, что если вы тестируете утверждения или исключения в вашем коде приложения, вы должны установить
app.testing = Trueдля того, чтобы исключения передавались тестовому клиенту. В противном случае исключение будет обработано приложением (не видно тестовому клиенту), и единственным указанием на ошибку AssertionError или другое исключение будет ответ со статусом 500 тестовому клиенту. См. атрибутtesting. Например:app.testing = True client = app.test_client()
Тестовый клиент может быть использован в
withблоке для отсрочки закрытия контекста до концаwithблока. Это полезно, если вы хотите получить доступ к локальным переменным контекста для тестирования:with app.test_client() as c: rv = c.get('/?vodka=42') assert request.args['vodka'] == '42'Кроме того, вы можете передать необязательные ключевые аргументы, которые затем будут переданы конструктору приложения
test_client_class. Например:from flask.testing import FlaskClient class CustomClient(FlaskClient): def __init__(self, *args, **kwargs): self._authentication = kwargs.pop("authentication") super(CustomClient,self).__init__( *args, **kwargs) app.test_client_class = CustomClient client = app.test_client(authentication='Basic ....')См.
FlaskClientдля получения дополнительной информации.Журнал изменений
Изменено в версии 0.11: Добавлен
**kwargsдля поддержки передачи дополнительных ключевых аргументов в конструкторtest_client_class.Добавлен в версии 0.7: Добавлен параметр
use_cookies, а также возможность переопределения используемого клиента путем установки атрибутаtest_client_class.Изменено в версии 0.4: Добавлена поддержка использования
withблока для клиента.- Parameters:
-
- use_cookies (bool)
- kwargs (t.Any)
- Return type:
-
test_cli_runner(**kwargs) -
Создает исполняемый инструмент командной строки для тестирования команд командной строки. См. Запуск команд с помощью инструмента командной строки.
Возвращает экземпляр
test_cli_runner_class, по умолчаниюFlaskCliRunner. Объект приложения Flask передается в качестве первого аргумента.Журнал изменений
Добавлен в версии 1.0.
- Parameters:
-
kwargs (t.Any)
- Return type:
-
handle_http_exception(e) -
Обрабатывает исключение HTTP. По умолчанию это вызовет зарегистрированные обработчики ошибок и вернет исключение как ответ.
Журнал изменений
Изменено в версии 1.0.3:
RoutingException, используемый внутри для действий, таких как перенаправление на слеш во время маршрутизации, не передаётся обработчикам ошибок.Изменено в версии 1.0: Исключения ищутся по коду и по MRO, поэтому подклассы
HTTPExceptionмогут обрабатываться универсальным обработчиком для базовогоHTTPException.Добавлен в версии 0.3.
- Parameters:
-
e (HTTPException)
- Return type:
-
HTTPException | ft.ResponseReturnValue
-
-
handle_user_exception(e) -
Этот метод вызывается всякий раз, когда возникает исключение, которое должно быть обработано. Специальным случаем является
HTTPException, который передаётся методуhandle_http_exception(). Эта функция либо вернёт значение ответа, либо повторно поднимет исключение с тем же трассировкой.Журнал изменений
Изменено в версии 1.0: Ошибки ключей, возникающие из данных запроса, такие как
form, показывают неверный ключ в режиме отладки, а не общее сообщение об ошибке плохого запроса.Добавлен в версии 0.7.
- Параметры:
-
e (Исключение)
- Тип возвращаемого значения:
-
HTTPException | ft.ResponseReturnValue
-
handle_exception(e) -
Обрабатывает исключение, для которого не был зарегистрирован обработчик ошибок или которое было поднято обработчиком ошибок. Это всегда приводит к ошибке 500
InternalServerError.Всегда отправляет сигнал
got_request_exception.Если
PROPAGATE_EXCEPTIONSимеет значениеTrue, например, в режиме отладки, ошибка будет повторно поднята, чтобы отладчик мог её отобразить. В противном случае исходное исключение регистрируется, и возвращаетсяInternalServerError.Если для
InternalServerErrorили500зарегистрирован обработчик ошибок, он будет использован. Для согласованности, обработчик всегда получитInternalServerError. Исходное необработанное исключение доступно какe.original_exception.Журнал изменений
Изменено в версии 1.1.0: Обработчику всегда передаётся экземпляр
InternalServerError, устанавливаяoriginal_exceptionна необработанную ошибку.Изменено в версии 1.1.0:
after_requestфункции и другие завершающие действия выполняются даже для стандартного ответа 500, когда обработчик отсутствует.Добавлен в версии 0.3.
- Параметры:
-
e (Исключение)
- Тип возвращаемого значения:
-
log_exception(exc_info) -
Регистрирует исключение. Этот метод вызывается методом
handle_exception(), если отладка отключена, и непосредственно перед вызовом обработчика. По умолчанию исключение регистрируется как ошибка вlogger.Журнал изменений
Добавлен в версии 0.8.
- Параметры:
-
exc_info (Кортеж[Тип, BaseException, TracebackType] | Кортеж[None, None, None])
- Тип возвращаемого значения:
-
None
-
dispatch_request() -
Выполняет обработку запроса. Сопоставляет URL и возвращает значение представления или обработчика ошибок. Это необязательно должно быть объектом ответа. Для преобразования возвращаемого значения в правильный объект ответа вызовите
make_response().Журнал изменений
Изменено в версии 0.7: Больше не выполняет обработку исключений, этот код был перемещён в новый метод
full_dispatch_request().- Тип возвращаемого значения:
-
ft.ResponseReturnValue
-
full_dispatch_request() -
Обрабатывает запрос и дополнительно выполняет предобработку и постобработку запроса, а также обработку HTTP-исключений и ошибок.
Журнал изменений
Добавлен в версии 0.7.
- Тип возвращаемого значения:
-
make_default_options_response() -
Этот метод вызывается для создания стандартного ответа
OPTIONS. Это можно изменить путём наследования, чтобы изменить стандартное поведение ответовOPTIONS.Журнал изменений
Добавлен в версии 0.7.
- Тип возвращаемого значения:
-
ensure_sync(func) -
Обеспечивает синхронность функции для WSGI-работников. Простые
defфункции возвращаются как есть.async defфункции оборачиваются для запуска и ожидания ответа.Переопределите этот метод, чтобы изменить, как приложение запускает асинхронные представления.
Журнал изменений
Добавлен в версии 2.0.
- Параметры:
-
func (Вызываемый объект[[...], Любой])
- Тип возвращаемого значения:
-
Вызываемый объект[[…], Любой]
-
async_to_sync(func) -
Возвращает синхронную функцию, которая запустит функцию корутины.
result = app.async_to_sync(func)(*args, **kwargs)
Переопределите этот метод, чтобы изменить способ преобразования приложения асинхронного кода в вызываемый синхронно.
Журнал изменений
Добавлен в версии 2.0.
- Параметры:
-
func (Вызываемый объект[[...], Корутина[Любой, Любой, Любой]])
- Тип возвращаемого значения:
-
Вызываемый объект[[…], Любой]
-
-
url_for(endpoint, *, _anchor=None, _method=None, _scheme=None, _external=None, **values) -
Генерирует URL для заданного конечной точки с заданными значениями.
Этот метод вызывается методом
flask.url_for(), и его можно вызывать напрямую.Конечная точка — это имя правила URL, обычно добавляемое с помощью
@app.route(), и обычно совпадает с именем функции представления. Правило, определённое вBlueprint, будет добавлять имя Blueprint, разделённое символом., к конечной точке.В некоторых случаях, например, при отправке электронных писем, вам могут потребоваться URL, включающие схему и домен, например,
https://example.com/hello. По умолчанию URL являются внешними, если запрос не активен, но это требует установкиSERVER_NAME, чтобы Flask знал, какой домен использовать.APPLICATION_ROOTиPREFERRED_URL_SCHEMEтакже следует настроить по мере необходимости. Эта настройка используется только тогда, когда запрос не активен.Функции могут быть декорированы с помощью
url_defaults()для изменения ключевых аргументов перед построением URL.Если построение URL по какой-либо причине не удалось, например, из-за неизвестной конечной точки или неправильных значений, вызывается метод приложения
handle_url_build_error(). Если он возвращает строку, эта строка возвращается, в противном случае генерируется исключениеBuildError.- Параметры:
-
-
endpoint (str) – Имя конечной точки, связанной с URL, который необходимо сгенерировать. Если оно начинается с
., будет использоваться имя текущего Blueprint (если оно есть). -
_anchor (str | None) – Если указано, это значение будет добавлено как
#anchorк URL. - _method (str | None) – Если указано, генерируется URL, связанный с этим методом для конечной точки.
- _scheme (str | None) – Если указано, URL будет иметь эту схему, если это внешний URL.
- _external (bool | None) – Если указано, отдавать предпочтение внутреннему URL (False) или требовать внешнего URL (True). Внешние URL включают схему и домен. По умолчанию URL являются внешними, если запрос не активен.
-
values (Any) – Значения для использования в переменных частях правила URL. Неизвестные ключи добавляются как аргументы запроса, как
?a=b&c=d.
-
endpoint (str) – Имя конечной точки, связанной с URL, который необходимо сгенерировать. Если оно начинается с
- Тип возвращаемого значения:
Изменения
Добавлена в версии 2.2: Перемещена из
flask.url_for, которая вызывает этот метод.
-
make_response(rv) -
Преобразует возвращаемое значение из функции представления в экземпляр
response_class.- Параметры:
-
rv (ft.ResponseReturnValue) –
возвращаемое значение из функции представления. Функция представления должна возвращать ответ. Не допускается возвращение
None, или завершение функции представления без возвращаемого значения. Допускаемые типы дляview_rv:-
str -
Объект ответа создаётся со строкой, закодированной в UTF-8, как телом.
-
bytes -
Объект ответа создаётся с байтами в качестве тела.
-
dict -
Словарь, который будет сериализован в JSON перед возвращением.
-
list -
Список, который будет сериализован в JSON перед возвращением.
-
generator or iterator -
Генератор, возвращающий
strилиbytesдля потоковой передачи в качестве ответа. -
tuple -
Либо
(body, status, headers),(body, status), или(body, headers), гдеbody— это любой из других поддерживаемых типов,status— это строка или целое число, иheaders— это словарь или список кортежей(key, value). Еслиbody— это экземплярresponse_class,statusперезаписывает существующее значение, иheadersрасширяются. -
response_class -
Объект возвращается без изменений.
-
other Response class -
Объект преобразуется в
response_class. -
callable() -
Функция вызывается как WSGI-приложение. Результат используется для создания объекта ответа.
-
- Тип возвращаемого значения:
Изменения
Изменено в версии 2.2: Генератор преобразуется в потоковый ответ. Список преобразуется в JSON-ответ.
Изменено в версии 1.1: Словарь преобразуется в JSON-ответ.
Изменено в версии 0.9: Ранее кортеж интерпретировался как аргументы для объекта ответа.
-
preprocess_request() -
Вызывается перед обработкой запроса. Вызывает зарегистрированные в приложении и текущем Blueprint (если есть) препроцессоры значений URL
url_value_preprocessors. Затем вызывает зарегистрированные в приложении и Blueprint функции перед обработкой запросаbefore_request_funcs.Если любой обработчик
before_request()возвращает значение, отличное от None, это значение обрабатывается так, как если бы это было возвращаемое значение из представления, и дальнейшая обработка запроса прекращается.- Тип возвращаемого значения:
-
ft.ResponseReturnValue | None
-
process_response(response) -
Может быть переопределён для изменения объекта ответа перед отправкой его WSGI-серверу. По умолчанию вызываются все функции, декорированные
after_request().Изменения
Изменено в версии 0.5: Начиная с Flask 0.5, функции, зарегистрированные для выполнения после обработки запроса, вызываются в обратном порядке регистрации.
- Параметры:
-
response (Response) – объект
response_class. - Возвращаемое значение:
-
новый объект ответа или тот же, должен быть экземпляром
response_class. - Тип возвращаемого значения:
-
-
do_teardown_request(exc=_sentinel) -
Вызывается после обработки запроса и возврата ответа, непосредственно перед тем, как контекст запроса будет удален.
Вызывает все функции, помеченные декоратором
teardown_request(), иBlueprint.teardown_request(), если запрос обрабатывался планом. Наконец, отправляется сигналrequest_tearing_down.Вызывается методом
RequestContext.pop(), который может быть задержан во время тестирования для сохранения доступа к ресурсам.- Параметры:
-
exc (BaseException | None) – Необработанное исключение, поднятое при обработке запроса. Определяется из текущей информации об исключении, если не передано. Передаётся каждой функции разборки.
- Тип возвращаемого значения:
-
None
Изменения
Изменено в версии 0.9: Добавлен аргумент
exc.
-
do_teardown_appcontext(exc=_sentinel) -
Вызывается непосредственно перед удалением контекста приложения.
При обработке запроса контекст приложения удаляется после контекста запроса. См.
do_teardown_request().Вызывает все функции, помеченные декоратором
teardown_appcontext(). Затем отправляется сигналappcontext_tearing_down.Вызывается методом
AppContext.pop().Изменения
Добавлен в версии 0.9.
- Параметры:
-
exc (BaseException | None)
- Тип возвращаемого значения:
-
None
-
app_context() -
Создаёт контекст приложения
AppContext. Используйте его в блокеwith, чтобы установить контекст, который сделаетcurrent_appссылкой на это приложение.Контекст приложения автоматически устанавливается методом
RequestContext.push()при обработке запроса и при выполнении команд CLI. Используйте этот метод для создания контекста вручную в других ситуациях.with app.app_context(): init_db()См. Контекст приложения.
Изменения
Добавлен в версии 0.9.
- Тип возвращаемого значения:
-
request_context(environ) -
Создаёт контекст запроса
RequestContext, представляющий WSGI-среду. Используйте его в блокеwith, чтобы установить контекст, который сделаетrequestссылкой на этот запрос.См. Контекст запроса.
Как правило, не следует вызывать этот метод из собственного кода. Контекст запроса автоматически устанавливается методом
wsgi_app()при обработке запроса. Используйтеtest_request_context()для создания среды и контекста вместо этого метода.- Параметры:
-
environ (WSGIEnvironment) – WSGI-среда
- Тип возвращаемого значения:
-
test_request_context(*args, **kwargs) -
Создаёт
RequestContextдля WSGI-среды, созданной из указанных значений. Этот метод в основном полезен при тестировании, когда необходимо выполнить функцию, использующую данные запроса, без отправки полного запроса.См. Контекст запроса.
Используйте блок
withдля установки контекста, который сделаетrequestссылкой на запрос для созданной среды.with app.test_request_context(...): generate_report()При использовании оболочки, может быть проще вручную установить и удалить контекст, чтобы избежать отступов.
ctx = app.test_request_context(...) ctx.push() ... ctx.pop()
Принимает те же аргументы, что и
EnvironBuilderWerkzeug, с некоторыми значениями по умолчанию из приложения. Большинство доступных аргументов описаны в документации Werkzeug по ссылке. Здесь описаны особенности поведения Flask.- Параметры:
-
- path – Путь URL-запроса.
-
base_url – Базовый URL, на котором обслуживается приложение, который
pathотносительный. Если не указан, строится изPREFERRED_URL_SCHEME,subdomain,SERVER_NAMEиAPPLICATION_ROOT. -
subdomain – Имя поддомена, добавляемое к
SERVER_NAME. -
url_scheme – Схема, используемая вместо
PREFERRED_URL_SCHEME. - data – Тело запроса, как строка или словарь с ключами и значениями формы.
-
json – Если указано, сериализуется как JSON и передаётся в
data. Также значения по умолчаниюcontent_typeустанавливаются вapplication/json. -
args (Any) – дополнительные позиционные аргументы, передаваемые в
EnvironBuilder. -
kwargs (Any) – дополнительные именованные аргументы, передаваемые в
EnvironBuilder.
- Тип возвращаемого значения:
-
wsgi_app(environ, start_response) -
Файл WSGI-приложения. Он не реализован в
__call__(), чтобы мидлвары могли применяться без потери ссылки на объект приложения. Вместо этого:app = MyMiddleware(app)
Лучше делать так:
app.wsgi_app = MyMiddleware(app.wsgi_app)
Тогда у вас всё ещё есть исходный объект приложения, и вы можете продолжить вызывать методы на нём.
Изменения
Изменено в версии 0.7: События разборки контекстов запроса и приложения вызываются даже при возникновении необработанной ошибки. Другие события могут не вызываться в зависимости от того, когда произошла ошибка во время обработки запроса. См. Обработчики и ошибки.
- Параметры:
-
- environ (WSGIEnvironment) – WSGI-среда.
- start_response (StartResponse) – вызываемый объект, принимающий код состояния, список заголовков и контекст исключения (необязательный) для начала ответа.
- Тип возвращаемого значения:
-
cabc.Iterable[bytes]
-
-
aborter_class -
псевдоним
Aborter
-
add_template_filter(f, name=None) -
Регистрация пользовательского фильтра шаблонов. Работает точно так же, как декоратор
template_filter().
-
add_template_global(f, name=None) -
Регистрация пользовательской глобальной функции шаблона. Работает точно так же, как декоратор
template_global().Изменения
Добавлена в версии 0.10.
-
add_template_test(f, name=None) -
Регистрация пользовательского теста шаблона. Работает точно так же, как декоратор
template_test().Изменения
Добавлена в версии 0.10.
-
add_url_rule(rule, endpoint=None, view_func=None, provide_automatic_options=None, **options) -
Регистрация правила для маршрутизации входящих запросов и построения URL. Декоратор
route()является сокращением для вызова этого с аргументомview_func. Эти варианты эквивалентны:@app.route("/") def index(): ...def index(): ... app.add_url_rule("/", view_func=index)См. Регистрация маршрутов URL.
Имя конечной точки для маршрута по умолчанию — имя функции представления, если параметр
endpointне передан. Возникнет ошибка, если функция уже зарегистрирована для конечной точки.Параметр
methodsпо умолчанию["GET"].HEADвсегда добавляется автоматически, аOPTIONS— по умолчанию.view_funcнеобязательно, но если правило должно участвовать в маршрутизации, имя конечной точки должно быть связано с функцией представления в какой-то момент с помощью декоратораendpoint().app.add_url_rule("/", endpoint="index") @app.endpoint("index") def index(): ...Если у
view_funcесть атрибутrequired_methods, эти методы добавляются к переданным и автоматическим методам. Если у него есть атрибутprovide_automatic_methods, он используется в качестве значения по умолчанию, если параметр не передан.- Параметры:
-
- rule (str) – Строка правила URL.
-
endpoint (str | None) – Имя конечной точки, которое следует связать с правилом и функцией представления. Используется при маршрутизации и построении URL. По умолчанию
view_func.__name__. - view_func (ft.RouteCallable | None) – Функция представления для связи с именем конечной точки.
-
provide_automatic_options (bool | None) – Добавить метод
OPTIONSи автоматически отвечать на запросыOPTIONS. -
options (t.Any) – Дополнительные параметры, переданные объекту
Rule.
- Тип возвращаемого значения:
-
None
-
after_request(f) -
Регистрация функции, которая выполняется после каждого запроса к этому объекту.
Функция вызывается с объектом ответа и должна возвращать объект ответа. Это позволяет функциям изменять или заменять ответ перед отправкой.
Если функция вызывает исключение, любые оставшиеся функции
after_requestне будут вызваны. Поэтому этого не следует использовать для действий, которые должны выполняться, например, для закрытия ресурсов. Используйтеteardown_request()для этого.Доступно как для приложений, так и для объектов Blueprint. При использовании с приложением выполняется после каждого запроса. При использовании с Blueprint выполняется после каждого запроса, обрабатываемого Blueprint. Для регистрации с Blueprint и выполнения после каждого запроса используйте
Blueprint.after_app_request().- Параметры:
-
f (T_after_request)
- Тип возвращаемого значения:
-
T_after_request
-
app_ctx_globals_class -
псевдоним
_AppCtxGlobals
-
auto_find_instance_path() -
Пытается определить путь к экземпляру, если он не был передан в конструктор класса приложения. В основном он вычисляет путь к папке с именем
instanceрядом с вашим основным файлом или пакетом.Изменения
Добавлена в версии 0.8.
- Тип возвращаемого значения:
-
before_request(f) -
Регистрация функции, которая выполняется перед каждым запросом.
Например, это можно использовать для открытия соединения с базой данных или для загрузки вошедшего в систему пользователя из сеанса.
@app.before_request def load_user(): if "user_id" in session: g.user = db.session.get(session["user_id"])Функция вызывается без аргументов. Если она возвращает значение, отличное от
None, значение обрабатывается так, как если бы это был возвращаемый результат представления, и дальнейшая обработка запроса останавливается.Доступно как для приложений, так и для объектов Blueprint. При использовании с приложением выполняется перед каждым запросом. При использовании с Blueprint выполняется перед каждым запросом, обрабатываемым Blueprint. Для регистрации с Blueprint и выполнения перед каждым запросом используйте
Blueprint.before_app_request().- Параметры:
-
f (T_before_request)
- Тип возвращаемого значения:
-
T_before_request
-
config_class -
псевдоним
Config
-
-
context_processor(f) -
Регистрирует функцию-обработчик контекста шаблона. Эти функции выполняются перед отрисовкой шаблона. Ключи возвращаемого словаря добавляются как переменные, доступные в шаблоне.
Доступно как для объектов приложения, так и для объектов blueprints. При использовании на объекте приложения, эта функция вызывается для каждого отрисовываемого шаблона. При использовании на объекте blueprint, эта функция вызывается для шаблонов, отрисовываемых из представлений blueprint. Для регистрации с blueprint и влияния на каждый шаблон используйте
Blueprint.app_context_processor().- Parameters:
-
f (T_template_context_processor)
- Return type:
-
T_template_context_processor
-
create_global_jinja_loader() -
Создаёт загрузчик для среды Jinja2. Может использоваться для переопределения только загрузчика, сохраняя остальное без изменений. Не рекомендуется переопределять эту функцию. Вместо этого следует переопределить функцию
jinja_loader().Глобальный загрузчик выполняет переключение между загрузчиками приложения и отдельных blueprints.
Changelog
Добавлена в версии 0.7.
- Return type:
-
DispatchingJinjaLoader
-
property debug: bool -
Включён ли режим отладки. При использовании
flask runдля запуска сервера разработки, будет отображаться интерактивный отладчик для необработанных исключений, и сервер будет перезагружен при изменении кода. Это соответствует ключу конфигурацииDEBUG. Может работать некорректно, если задаётся позднее.Не включайте режим отладки при развертывании в рабочей среде.
По умолчанию:
False
-
delete(rule, **options) -
Является сокращением для
route()сmethods=["DELETE"].Changelog
Добавлена в версии 2.0.
-
endpoint(endpoint) -
Декорирует функцию представления, регистрируя её для указанного конечной точки. Используется, если правило добавлено без
view_funcс помощьюadd_url_rule().app.add_url_rule("/ex", endpoint="example") @app.endpoint("example") def example(): ...
-
errorhandler(code_or_exception) -
Регистрирует функцию для обработки ошибок по коду или типу исключения.
Декоратор, используемый для регистрации функции, соответствующей коду ошибки. Пример:
@app.errorhandler(404) def page_not_found(error): return 'This page does not exist', 404Вы также можете зарегистрировать обработчики для произвольных типов исключений:
@app.errorhandler(DatabaseError) def special_exception_handler(error): return 'Database connection failed', 500Доступно как для объектов приложения, так и для объектов blueprint. При использовании на объекте приложения, это может обрабатывать ошибки со всех запросов. При использовании на blueprint, это может обрабатывать ошибки с запросов, которые обрабатывает blueprint. Для регистрации с blueprint и влияния на каждый запрос, используйте
Blueprint.app_errorhandler().Changelog
Добавлена в версии 0.7: Используйте
register_error_handler()вместо непосредственного измененияerror_handler_specдля обработчиков ошибок на уровне всего приложения.Добавлена в версии 0.7: Теперь можно дополнительно регистрировать пользовательские типы исключений, которые не обязательно должны быть подклассом класса
HTTPException.
-
get(rule, **options) -
Является сокращением для
route()сmethods=["GET"].Changelog
Добавлена в версии 2.0.
-
handle_url_build_error(error, endpoint, values) -
Вызывается
url_for(), если было поднятоBuildError. Если это возвращает значение, оно будет возвращеноurl_for, иначе ошибка будет повторно поднята.Каждая функция в
url_build_error_handlersвызывается сerror,endpointиvalues. Если функция возвращаетNoneили поднимаетBuildError, она пропускается. В противном случае, её возвращаемое значение возвращаетсяurl_for.
-
property has_static_folder: bool -
Trueеслиstatic_folderзадан.Changelog
Добавлена в версии 0.5.
-
-
inject_url_defaults(endpoint, values) -
Вставляет значения по умолчанию для заданного конечной точки прямо в словарь значений. Это используется внутри и автоматически вызывается при построении URL.
Changelog
Добавлен в версии 0.7.
-
iter_blueprints() -
Итерируется по всем blueprint в порядке их регистрации.
Changelog
Добавлен в версии 0.11.
- Тип возвращаемого значения:
-
t.ValuesView[Blueprint]
-
property jinja_env: Environment -
Среда Jinja, используемая для загрузки шаблонов.
Среда создается при первом обращении к этому свойству. Изменение
jinja_optionsпосле этого не повлияет на результат.
-
jinja_environment -
Псевдоним
Environment
-
property jinja_loader: BaseLoader | None -
Загрузчик Jinja для шаблонов этого объекта. По умолчанию это класс
jinja2.loaders.FileSystemLoaderкtemplate_folder, если он задан.Changelog
Добавлен в версии 0.5.
-
jinja_options: dict[str, t.Any] = {} -
Параметры, передаваемые среде Jinja в
create_jinja_environment(). Изменение этих параметров после создания среды (обращение кjinja_env) не повлияет на результат.Changelog
Изменено в версии 1.1.0: Это
dictвместоImmutableDict, для более простого конфигурирования.
-
json_provider_class -
Псевдоним
DefaultJSONProvider
-
property logger: Logger -
Стандартный Python
Loggerдля приложения, с тем же именем, что иname.В режиме отладки, уровень логгера
levelбудет установлен вDEBUG.Если нет обработчиков, будет добавлен обработчик по умолчанию. См. Ведение журнала для получения дополнительной информации.
Changelog
Изменено в версии 1.1.0: Логгер получает имя, совпадающее с именем
name, а не жестко заданным"flask.app".Изменено в версии 1.0.0: Поведение упрощено. Логгер всегда имеет имя
"flask.app". Уровень устанавливается только во время конфигурации, не проверяетapp.debugкаждый раз. Используется только один формат, а не разные в зависимости отapp.debug. Обработчики не удаляются, и обработчик добавляется только если обработчики еще не настроены.Добавлен в версии 0.3.
-
make_aborter() -
Создает объект для присвоения к
aborter. Этот объект вызывается функциейflask.abort()для повышения HTTP-ошибок и может быть вызван напрямую.По умолчанию создает экземпляр
aborter_class, который по умолчанию равенwerkzeug.exceptions.Aborter.Changelog
Добавлен в версии 2.2.
- Тип возвращаемого значения:
-
make_config(instance_relative=False) -
Используется для создания атрибута config конструктором Flask. Параметр
instance_relativeпередается из конструктора Flask (там он называетсяinstance_relative_config) и указывает, должен ли config быть относительным к пути экземпляра или корневому пути приложения.Changelog
Добавлен в версии 0.8.
-
property name: str -
Имя приложения. Обычно это имя импорта с отличием, что оно угадывается из файла запуска, если имя импорта равно main. Это имя используется в качестве отображаемого имени, когда Flask нужен name приложения. Его можно установить и переопределить, чтобы изменить значение.
Changelog
Добавлен в версии 0.8.
-
patch(rule, **options) -
Сокращение для
route()сmethods=["PATCH"].Changelog
Добавлен в версии 2.0.
-
permanent_session_lifetime -
timedelta, используемая для установки даты истечения срока действия постоянной сессии. По умолчанию 31 день, что обеспечивает выживание постоянной сессии примерно в течение одного месяца.Этот атрибут также можно настроить из конфигурации с ключом конфигурации
PERMANENT_SESSION_LIFETIME. Значение по умолчаниюtimedelta(days=31)
-
-
post(rule, **options) -
Сокращение для
route()сmethods=["POST"].Changelog
Добавлен в версии 2.0.
-
put(rule, **options) -
Сокращение для
route()сmethods=["PUT"].Changelog
Добавлен в версии 2.0.
-
redirect(location, code=302) -
Создать объект ответа перенаправления.
Вызывается методом
flask.redirect()и может быть вызван напрямую.- Параметры:
- Тип возвращаемого значения:
-
BaseResponse
Changelog
Добавлен в версии 2.2: Перемещено из
flask.redirect, который вызывает этот метод.
-
register_blueprint(blueprint, **options) -
Зарегистрировать
Blueprintв приложении. Аргументы ключевого слова, переданные в этот метод, переопределят значения по умолчанию, заданные для блинка.Вызывает метод
register()блинка после записи блинка в список блинков приложенияblueprints.- Параметры:
-
- blueprint (Blueprint) – Блинк для регистрации.
- url_prefix – Пути блинка будут иметь это префикс.
- subdomain – Маршруты блинка будут соответствовать этому поддомену.
- url_defaults – Маршруты блинка будут использовать эти значения по умолчанию для аргументов представления.
-
options (t.Any) – Дополнительные аргументы ключевого слова передаются в
BlueprintSetupState. К ним можно получить доступ в функциях обратного вызоваrecord().
- Тип возвращаемого значения:
-
None
Changelog
Изменено в версии 2.0.1: Параметр
nameможет использоваться для изменения имени (с префиксом точки) блинка, с которым он зарегистрирован. Это позволяет регистрировать один и тот же блинк несколько раз с уникальными именами дляurl_for.Добавлен в версии 0.7.
-
register_error_handler(code_or_exception, f) -
Альтернативная функция присоединения обработчика ошибок к декоратору
errorhandler(), которая проще в использовании для не-декораторских вариантов.Changelog
Добавлен в версии 0.7.
-
route(rule, **options) -
Декорировать функцию представления для регистрации с заданным URL-правилом и опциями. Вызывает
add_url_rule(), в которой содержится больше подробностей об реализации.@app.route("/") def index(): return "Hello, World!"См. Регистрация URL-маршрутов.
Имя конечной точки маршрута по умолчанию совпадает с именем функции представления, если параметр
endpointне задан.Параметр
methodsпо умолчанию равен["GET"].HEADиOPTIONSдобавляются автоматически.
-
secret_key -
Если ключ секретности задан, криптографические компоненты могут использовать его для подписи файлов cookie и других элементов. Установите его в сложное случайное значение, когда требуется использовать защищенные файлы cookie.
Этот атрибут также можно настроить из конфигурации с помощью ключа конфигурации
SECRET_KEY. Значение по умолчаниюNone.
-
select_jinja_autoescape(filename) -
Возвращает
True, если автоэскейп должен быть активен для данного имени шаблона. Если имя шаблона не указано, возвращаетTrue.Changelog
Изменено в версии 2.2: Автоэскейп теперь включен по умолчанию для файлов
.svg.Добавлен в версии 0.5.
-
shell_context_processor(f) -
Регистрирует функцию процессора контекста оболочки.
Changelog
Добавлен в версии 0.11.
- Параметры:
-
f (T_shell_context_processor)
- Тип возвращаемого значения:
-
T_shell_context_processor
-
-
should_ignore_error(error) -
Это вызывается, чтобы выяснить, нужно ли игнорировать ошибку с точки зрения системы завершения работы. Если эта функция возвращает
True, обработчики завершения работы не получат ошибку.Журнал изменений
Добавлена в версии 0.10.
- Параметры:
-
error (BaseException | None)
- Тип возвращаемого значения:
-
property static_folder: str | None -
Абсолютный путь к настроенной папке статических файлов.
Noneесли папка статических файлов не задана.
-
property static_url_path: str | None -
Префикс URL, с которого будет доступен статический маршрут.
Если он не был настроен во время инициализации, он выводится из
static_folder.
-
teardown_appcontext(f) -
Регистрирует функцию, которая будет вызываться при извлечении контекста приложения. Контекст приложения обычно извлекается после контекста запроса для каждого запроса, в конце команд CLI или после завершения вручную добавленного контекста.
with app.app_context(): ...Когда блок
withзавершается (или вызываетсяctx.pop()), функции завершения вызываются непосредственно перед тем, как контекст приложения станет неактивным. Поскольку контекст запроса обычно также управляет контекстом приложения, он также будет вызываться при извлечении контекста запроса.Если функция завершения была вызвана из-за необработанной ошибки, ей будет передан объект ошибки. Если зарегистрирован
errorhandler(), он обработает исключение, и функция завершения его не получит.Функции завершения не должны генерировать исключения. Если они выполняют код, который может завершиться ошибкой, они должны обернуть этот код в блок
try/exceptи регистрировать любые ошибки.Значения возвращаемых функций завершения игнорируются.
Журнал изменений
Добавлена в версии 0.9.
- Параметры:
-
f (T_teardown)
- Тип возвращаемого значения:
-
T_teardown
-
teardown_request(f) -
Регистрирует функцию, которая будет вызываться при извлечении контекста запроса. Обычно это происходит в конце каждого запроса, но контексты могут также добавляться вручную во время тестирования.
with app.test_request_context(): ...Когда блок
withзавершается (или вызываетсяctx.pop()), функции завершения вызываются непосредственно перед тем, как контекст запроса станет неактивным.Если функция завершения была вызвана из-за необработанной ошибки, ей будет передан объект ошибки. Если зарегистрирован
errorhandler(), он обработает исключение, и функция завершения его не получит.Функции завершения не должны генерировать исключения. Если они выполняют код, который может завершиться ошибкой, они должны обернуть этот код в блок
try/exceptи регистрировать любые ошибки.Значения возвращаемых функций завершения игнорируются.
Это доступно как для объектов приложения, так и для объектов шаблонов. При использовании с приложением, эта функция выполняется после каждого запроса. При использовании с шаблоном, эта функция выполняется после каждого запроса, который обработала шаблон. Для регистрации с шаблоном и выполнения после каждого запроса используйте
Blueprint.teardown_app_request().- Параметры:
-
f (T_teardown)
- Тип возвращаемого значения:
-
T_teardown
-
template_filter(name=None) -
Декоратор, используемый для регистрации пользовательских фильтров шаблонов. Вы можете указать имя для фильтра, в противном случае будет использовано имя функции. Пример:
@app.template_filter() def reverse(s): return s[::-1]
-
template_global(name=None) -
Декоратор, используемый для регистрации пользовательской глобальной функции шаблона. Вы можете указать имя для глобальной функции, в противном случае будет использовано имя функции. Пример:
@app.template_global() def double(n): return 2 * nЖурнал изменений
Добавлена в версии 0.10.
-
template_test(name=None) -
Декоратор, используемый для регистрации пользовательского теста шаблона. Вы можете указать имя для теста, в противном случае будет использовано имя функции. Пример:
@app.template_test() def is_prime(n): if n == 2: return True for i in range(2, int(math.ceil(math.sqrt(n))) + 1): if n % i == 0: return False return TrueЖурнал изменений
Добавлена в версии 0.10.
-
test_cli_runner_class: type[FlaskCliRunner] | None = None -
Подкласс
CliRunner, по умолчаниюFlaskCliRunner, который используется методомtest_cli_runner(). Его метод__init__должен принимать объект приложения Flask в качестве первого аргумента.Журнал изменений
Добавлена в версии 1.0.
-
test_client_class: type[FlaskClient] | None = None -
Метод
test_client()создает экземпляр этого класса тестового клиента. По умолчаниюFlaskClient.Журнал изменений
Добавлена в версии 0.7.
-
testing -
Флаг тестирования. Установите это значение в
Trueдля включения тестового режима расширений Flask (и, возможно, в будущем и самого Flask). Например, это может активировать вспомогательные функции тестирования, которые имеют дополнительную стоимость выполнения, которую не следует включать по умолчанию.Если это включено, и PROPAGATE_EXCEPTIONS не изменено от значения по умолчанию, то оно подразумевается включенным.
Этот атрибут также можно настроить из конфигурации с помощью ключа конфигурации
TESTING. По умолчаниюFalse.
-
-
trap_http_exception(e) -
Проверяет, нужно ли перехватывать исключение HTTP. По умолчанию это вернёт
Falseдля всех исключений, кроме исключения ошибки запроса с ключом, еслиTRAP_BAD_REQUEST_ERRORSустановлено вTrue. Также возвращаетTrueеслиTRAP_HTTP_EXCEPTIONSустановлено вTrue.Вызывается для всех исключений HTTP, поднятых функцией представления. Если оно возвращает
Trueдля любого исключения, обработчик ошибок для этого исключения не вызывается, и оно отображается как обычное исключение в трассировке стека. Это полезно для отладки неявно поднятых исключений HTTP.Журнал изменений
Изменено в версии 1.0: Ошибки запроса с ошибкой ключа по умолчанию не перехватываются в режиме отладки.
Добавлена в версии 0.8.
- Параметры:
-
e (Исключение)
- Тип возвращаемого значения:
-
url_defaults(f) -
Функция обратного вызова для значений по умолчанию URL для всех функций представления приложения. Она вызывается со значением конечной точки и значениями и должна обновить переданные значения на месте.
Доступна как для объектов приложения, так и для объектов шаблонов. При использовании с приложением она вызывается для каждого запроса. При использовании с шаблоном она вызывается для запросов, обрабатываемых шаблоном. Для регистрации в шаблоне и воздействия на каждый запрос используйте
Blueprint.app_url_defaults().- Параметры:
-
f (T_url_defaults)
- Тип возвращаемого значения:
-
T_url_defaults
-
url_map_class -
псевдоним
Map
-
url_rule_class -
псевдоним
Rule
-
url_value_preprocessor(f) -
Зарегистрировать функцию предварительной обработки значений URL для всех функций представления в приложении. Эти функции будут вызваны до функций
before_request().Функция может изменить значения, полученные из сопоставленного URL, прежде чем они будут переданы представлению. Например, это можно использовать для извлечения общего кода языка и размещения его в
gвместо передачи его каждой функции представления.Функция получает имя конечной точки и словарь значений. Возвращаемое значение игнорируется.
Доступна как для объектов приложения, так и для объектов шаблонов. При использовании с приложением она вызывается для каждого запроса. При использовании с шаблоном она вызывается для запросов, обрабатываемых шаблоном. Для регистрации в шаблоне и воздействия на каждый запрос используйте
Blueprint.app_url_value_preprocessor().- Параметры:
-
f (T_url_value_preprocessor)
- Тип возвращаемого значения:
-
T_url_value_preprocessor
-
instance_path -
Содержит путь к папке экземпляра.
Журнал изменений
Добавлена в версии 0.8.
-
config -
Словарь конфигурации как
Config. Ведёт себя точно так же, как обычный словарь, но поддерживает дополнительные методы для загрузки конфигурации из файлов.
-
aborter -
Экземпляр
aborter_class, созданныйmake_aborter(). Вызываетсяflask.abort()для поднятия ошибок HTTP и может быть вызван напрямую.Журнал изменений
Добавлена в версии 2.2: Перемещена из
flask.abort, которая вызывала этот объект.
-
json: JSONProvider -
Предоставляет доступ к методам JSON. Функции в
flask.jsonвызывают методы этого провайдера, когда контекст приложения активен. Используется для обработки запросов и ответов JSON.Экземпляр
json_provider_class. Может быть настроен путём изменения этого атрибута в подклассе или путём присваивания ему впоследствии.По умолчанию
DefaultJSONProviderиспользует встроенную в Python библиотекуjson. Разный провайдер может использовать другую библиотеку JSON.Журнал изменений
Добавлена в версии 2.2.
-
url_build_error_handlers: list[t.Callable[[Exception, str, dict[str, t.Any]], str]] -
Список функций, вызываемых
handle_url_build_error(), когдаurl_for()вызываетBuildError. Каждая функция вызывается сerror,endpointиvalues. Если функция возвращаетNoneили вызываетBuildError, она пропускается. В противном случае, её возвращаемое значение возвращаетсяurl_for.Журнал изменений
Добавлена в версии 0.9.
-
teardown_appcontext_funcs: list[ft.TeardownCallable] -
Список функций, вызываемых при уничтожении контекста приложения. Поскольку контекст приложения также разрушается при завершении запроса, здесь хранится код, отключающий подключения к базам данных.
Журнал изменений
Добавлена в версии 0.9.
-
shell_context_processors: list[ft.ShellContextProcessorCallable] -
Список функций обработчиков контекста оболочки, которые должны быть выполнены при создании контекста оболочки.
Журнал изменений
Добавлена в версии 0.11.
-
blueprints: dict[str, Blueprint] -
Сопоставляет зарегистрированные имена шаблонов с объектами шаблонов. Словарь сохраняет порядок регистрации шаблонов. Шаблоны могут быть зарегистрированы несколько раз, этот словарь не отслеживает, сколько раз они были подключены.
Журнал изменений
Добавлена в версии 0.7.
-
extensions: dict[str, t.Any] -
место, где расширения могут хранить состояние, специфичное для приложения. Например, здесь расширение может хранить движки баз данных и подобные вещи.
Ключ должен соответствовать имени модуля расширения. Например, в случае расширения “Flask-Foo” в
flask_foo, ключ будет'foo'.Журнал изменений
Добавлена в версии 0.7.
-
url_map -
Mapдля этого экземпляра. Можно использовать для изменения конвертеров маршрутизации после создания класса, но до подключения каких-либо маршрутов. Пример:from werkzeug.routing import BaseConverter class ListConverter(BaseConverter): def to_python(self, value): return value.split(',') def to_url(self, values): return ','.join(super(ListConverter, self).to_url(value) for value in values) app = Flask(__name__) app.url_map.converters['list'] = ListConverter
-
import_name -
Имя пакета или модуля, к которому относится этот объект. Не изменяйте его после того, как оно было установлено конструктором.
-
template_folder -
Путь к папке шаблонов, относительный к
root_path, для добавления в загрузчик шаблонов.Noneесли шаблоны не должны добавляться.
-
-
root_path -
Абсолютный путь к пакету в файловой системе. Используется для поиска ресурсов, содержащихся в пакете.
-
view_functions: dict[str, ft.RouteCallable] -
Словарь, сопоставляющий имена конечных точек функциям представления.
Для регистрации функции представления используйте декоратор
route().Эта структура данных внутренняя. Её не следует изменять напрямую, и её формат может быть изменён в любое время.
-
error_handler_spec: dict[ft.AppOrBlueprintKey, dict[int | None, dict[type[Exception], ft.ErrorHandlerCallable]]] -
Структура данных зарегистрированных обработчиков ошибок в формате
{scope: {code: {class: handler}}}. Ключscope— имя модуля, для которого активны обработчики, илиNoneдля всех запросов. Ключcode— HTTP-код состояния дляHTTPException, илиNoneдля других исключений. Внутренний словарь сопоставляет классы исключений функциям-обработчикам.Для регистрации обработчика ошибок используйте декоратор
errorhandler().Эта структура данных внутренняя. Её не следует изменять напрямую, и её формат может быть изменён в любое время.
-
before_request_funcs: dict[ft.AppOrBlueprintKey, list[ft.BeforeRequestCallable]] -
Структура данных функций, вызываемых в начале каждого запроса, в формате
{scope: [functions]}. Ключscope— имя модуля, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
before_request().Эта структура данных внутренняя. Её не следует изменять напрямую, и её формат может быть изменён в любое время.
-
after_request_funcs: dict[ft.AppOrBlueprintKey, list[ft.AfterRequestCallable[t.Any]]] -
Структура данных функций, вызываемых в конце каждого запроса, в формате
{scope: [functions]}. Ключscope— имя модуля, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
after_request().Эта структура данных внутренняя. Её не следует изменять напрямую, и её формат может быть изменён в любое время.
-
teardown_request_funcs: dict[ft.AppOrBlueprintKey, list[ft.TeardownCallable]] -
Структура данных функций, вызываемых в конце каждого запроса, даже если возникло исключение, в формате
{scope: [functions]}. Ключscope— имя модуля, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
teardown_request().Эта структура данных внутренняя. Её не следует изменять напрямую, и её формат может быть изменён в любое время.
-
template_context_processors: dict[ft.AppOrBlueprintKey, list[ft.TemplateContextProcessorCallable]] -
Структура данных функций, вызываемых для передачи дополнительных значений контекста при рендеринге шаблонов, в формате
{scope: [functions]}. Ключscope— имя модуля, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
context_processor().Эта структура данных внутренняя. Её не следует изменять напрямую, и её формат может быть изменён в любое время.
-
url_value_preprocessors: dict[ft.AppOrBlueprintKey, list[ft.URLValuePreprocessorCallable]] -
Структура данных функций, вызываемых для изменения ключевых аргументов, передаваемых функции представления, в формате
{scope: [functions]}. Ключscope— имя модуля, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
url_value_preprocessor().Эта структура данных внутренняя. Её не следует изменять напрямую, и её формат может быть изменён в любое время.
-
url_default_functions: dict[ft.AppOrBlueprintKey, list[ft.URLDefaultCallable]] -
Структура данных функций, вызываемых для изменения ключевых аргументов при генерации URL-адресов, в формате
{scope: [functions]}. Ключscope— имя модуля, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
url_defaults().Эта структура данных внутренняя. Её не следует изменять напрямую, и её формат может быть изменён в любое время.
-
Объекты шаблонов
-
class flask.Blueprint(name, import_name, static_folder=None, static_url_path=None, template_folder=None, url_prefix=None, subdomain=None, url_defaults=None, root_path=None, cli_group=_sentinel) -
- Параметры:
-
cli: Group -
Группа команд Click для регистрации команд CLI для этого объекта. Команды доступны из команды
flaskпосле обнаружения приложения и регистрации шаблонов.
-
get_send_file_max_age(filename) -
Используется
send_file()для определения значения кэшаmax_ageдля заданного пути к файлу, если оно не было передано.По умолчанию возвращает
SEND_FILE_MAX_AGE_DEFAULTиз конфигурацииcurrent_app. По умолчанию этоNone, что сообщает браузеру использовать условные запросы вместо кэширования по времени, что обычно предпочтительнее.Обратите внимание, что это дубликат того же метода в классе Flask.
Изменения
Изменено в версии 2.0: Значение по умолчанию конфигурации —
Noneвместо 12 часов.Добавлен в версии 0.9.
-
send_static_file(filename) -
Функция представления, используемая для обработки файлов из
static_folder. Маршрут автоматически регистрируется для этого представления по адресуstatic_url_path, еслиstatic_folderзадано.Обратите внимание, что это дубликат того же метода в классе Flask.
Изменения
Добавлен в версии 0.5.
-
open_resource(resource, mode='rb', encoding='utf-8') -
Открывает файл ресурса, относящийся к
root_path, для чтения. Эквивалент методаopen_resource()приложения, относящийся к шаблону.- Параметры:
- Тип возвращаемого значения:
Изменено в версии 3.1: Добавлен параметр
encoding.
-
add_app_template_filter(f, name=None) -
Регистрирует фильтр шаблона, доступный в любом шаблоне, рендерируемом приложением. Работает как декоратор
app_template_filter(). ЭквивалентноFlask.add_template_filter().
-
add_app_template_global(f, name=None) -
Регистрирует глобальную переменную шаблона, доступную в любом шаблоне, рендерируемом приложением. Работает как декоратор
app_template_global(). ЭквивалентноFlask.add_template_global().Изменения
Добавлен в версии 0.10.
-
add_app_template_test(f, name=None) -
Зарегистрировать тест шаблона, доступный в любом шаблоне, отображаемом приложением. Работает как декоратор
app_template_test(). ЭквивалентноFlask.add_template_test().Журнал изменений
Добавлен в версии 0.10.
-
add_url_rule(rule, endpoint=None, view_func=None, provide_automatic_options=None, **options) -
Зарегистрировать правило URL с синим принтом. Подробная документация в
Flask.add_url_rule().Правило URL имеет префикс с префиксом URL синего принта. Имя конечной точки, используемое с
url_for(), имеет префикс с именем синего принта.
-
after_app_request(f) -
Как
after_request(), но после каждого запроса, а не только тех, которые обрабатываются синим принтом. ЭквивалентноFlask.after_request().- Параметры:
-
f (T_after_request)
- Тип возвращаемого значения:
-
T_after_request
-
after_request(f) -
Зарегистрировать функцию для выполнения после каждого запроса к этому объекту.
Функция вызывается с объектом ответа и должна вернуть объект ответа. Это позволяет функциям изменять или заменять ответ перед отправкой.
Если функция вызывает исключение, любые оставшиеся
after_requestфункции не будут вызваны. Поэтому это не следует использовать для действий, которые должны быть выполнены, таких как закрытие ресурсов. Используйтеteardown_request()для этого.Доступно как для объектов приложения, так и для объектов синего принта. При использовании с приложением выполняется после каждого запроса. При использовании с синим принтом выполняется после каждого запроса, который обрабатывает синий принт. Чтобы зарегистрировать в синем принте и выполнить после каждого запроса, используйте
Blueprint.after_app_request().- Параметры:
-
f (T_after_request)
- Тип возвращаемого значения:
-
T_after_request
-
app_context_processor(f) -
Как
context_processor(), но для шаблонов, отображаемых каждым представлением, а не только синим принтом. ЭквивалентноFlask.context_processor().- Параметры:
-
f (T_template_context_processor)
- Тип возвращаемого значения:
-
T_template_context_processor
-
app_errorhandler(code) -
Как
errorhandler(), но для каждого запроса, а не только для запросов, обрабатываемых синим принтом. ЭквивалентноFlask.errorhandler().
-
app_template_filter(name=None) -
Зарегистрировать фильтр шаблона, доступный в любом шаблоне, отображаемом приложением. Эквивалентно
Flask.template_filter().
-
app_template_global(name=None) -
Зарегистрировать глобальную переменную шаблона, доступную в любом шаблоне, отображаемом приложением. Эквивалентно
Flask.template_global().Журнал изменений
Добавлен в версии 0.10.
-
app_template_test(name=None) -
Зарегистрировать тест шаблона, доступный в любом шаблоне, отображаемом приложением. Эквивалентно
Flask.template_test().Журнал изменений
Добавлен в версии 0.10.
-
-
app_url_defaults(f) -
Как
url_defaults(), но для каждого запроса, а не только тех, которые обрабатываются планом. ЭквивалентноFlask.url_defaults().- Параметры:
-
f (T_url_defaults)
- Тип возвращаемого значения:
-
T_url_defaults
-
app_url_value_preprocessor(f) -
Как
url_value_preprocessor(), но для каждого запроса, а не только тех, которые обрабатываются планом. ЭквивалентноFlask.url_value_preprocessor().- Параметры:
-
f (T_url_value_preprocessor)
- Тип возвращаемого значения:
-
T_url_value_preprocessor
-
before_app_request(f) -
Как
before_request(), но перед каждым запросом, а не только теми, которые обрабатываются планом. ЭквивалентноFlask.before_request().- Параметры:
-
f (T_before_request)
- Тип возвращаемого значения:
-
T_before_request
-
before_request(f) -
Зарегистрируйте функцию для выполнения перед каждым запросом.
Например, это можно использовать для открытия соединения с базой данных или загрузки вошедшего пользователя из сессии.
@app.before_request def load_user(): if "user_id" in session: g.user = db.session.get(session["user_id"])Функция будет вызываться без каких-либо аргументов. Если она возвращает значение, отличное от
None, это значение обрабатывается как возвращаемое значение представления, и дальнейшая обработка запроса прекращается.Это доступно как для объектов приложения, так и для планов. При использовании на приложении, это выполняется перед каждым запросом. При использовании на плане, это выполняется перед каждым запросом, который обрабатывает план. Для регистрации в плане и выполнения перед каждым запросом используйте
Blueprint.before_app_request().- Параметры:
-
f (T_before_request)
- Тип возвращаемого значения:
-
T_before_request
-
context_processor(f) -
Регистрирует функцию-обработчик контекста шаблона. Эти функции выполняются перед рендерингом шаблона. Ключи возвращаемого словаря добавляются в качестве переменных, доступных в шаблоне.
Это доступно как для объектов приложения, так и для планов. При использовании на приложении, это вызывается для каждого рендеренного шаблона. При использовании на плане, это вызывается для шаблонов, рендеренных из представлений плана. Для регистрации в плане и воздействия на каждый шаблон используйте
Blueprint.app_context_processor().- Параметры:
-
f (T_template_context_processor)
- Тип возвращаемого значения:
-
T_template_context_processor
-
delete(rule, **options) -
Сокращение для
route()сmethods=["DELETE"].Changelog
Добавлен в версии 2.0.
-
endpoint(endpoint) -
Отметьте функцию представления для регистрации на указанном конце. Используется, если правило добавлено без
view_funcс помощьюadd_url_rule().app.add_url_rule("/ex", endpoint="example") @app.endpoint("example") def example(): ...
-
errorhandler(code_or_exception) -
Регистрация функции для обработки ошибок по коду или классу исключения.
Декоратор, используемый для регистрации функции, заданной кодом ошибки. Пример:
@app.errorhandler(404) def page_not_found(error): return 'This page does not exist', 404Вы также можете зарегистрировать обработчики для произвольных исключений:
@app.errorhandler(DatabaseError) def special_exception_handler(error): return 'Database connection failed', 500Это доступно как для объектов приложения, так и для планов. При использовании на приложении, это может обрабатывать ошибки из каждого запроса. При использовании на плане, это может обрабатывать ошибки из запросов, которые обрабатывает план. Для регистрации в плане и воздействия на каждый запрос используйте
Blueprint.app_errorhandler().Changelog
Добавлен в версии 0.7: Используйте
register_error_handler()вместо непосредственной модификацииerror_handler_specдля обработчиков ошибок на уровне приложения.Добавлен в версии 0.7: Теперь также можно зарегистрировать типы пользовательских исключений, которые необязательно являются подклассом класса
HTTPException.
-
get(rule, **options) -
Сокращение для
route()сmethods=["GET"].Changelog
Добавлен в версии 2.0.
-
property has_static_folder: bool -
Trueеслиstatic_folderзадано.Changelog
Добавлен в версии 0.5.
-
-
property jinja_loader: BaseLoader | None -
Загрузчик Jinja для шаблонов этого объекта. По умолчанию это класс
jinja2.loaders.FileSystemLoaderи связан сtemplate_folder, если он задан.Changelog
Добавлен в версии 0.5.
-
make_setup_state(app, options, first_registration=False) -
Создаёт экземпляр объекта
BlueprintSetupState(), который позже передаётся функциям обратного вызова регистрации. Подклассы могут переопределить этот метод для возвращения подкласса состояния настройки.- Параметры:
- Тип возвращаемого значения:
-
patch(rule, **options) -
Сокращение для
route()сmethods=["PATCH"].Changelog
Добавлен в версии 2.0.
-
post(rule, **options) -
Сокращение для
route()сmethods=["POST"].Changelog
Добавлен в версии 2.0.
-
put(rule, **options) -
Сокращение для
route()сmethods=["PUT"].Changelog
Добавлен в версии 2.0.
-
record(func) -
Регистрирует функцию, которая вызывается при регистрации модуля в приложении. Эта функция вызывается со состоянием как аргумент, возвращённым методом
make_setup_state().- Параметры:
-
func (Callable[[BlueprintSetupState], None])
- Тип возвращаемого значения:
-
None
-
record_once(func) -
Работает как
record(), но оборачивает функцию в другую функцию, которая гарантирует, что функция вызывается только один раз. Если модуль регистрируется во второй раз в приложении, переданная функция не вызывается.- Параметры:
-
func (Callable[[BlueprintSetupState], None])
- Тип возвращаемого значения:
-
None
-
register(app, options) -
Вызывается
Flask.register_blueprint()для регистрации всех представлений и обратных вызовов, зарегистрированных в модуле, в приложении. СоздаётBlueprintSetupStateи вызывает каждый обратный вызовrecord()с ним.- Параметры:
-
- app (App) – Приложение, с которым регистрируется данный модуль.
-
options (dict[str, t.Any]) – Аргументы ключевых слов, переданные от
register_blueprint().
- Тип возвращаемого значения:
-
None
Changelog
Изменено в версии 2.3: Вложенные модули теперь корректно применяют поддомены.
Изменено в версии 2.1: Регистрация одного и того же модуля с тем же именем несколько раз является ошибкой.
Изменено в версии 2.0.1: Вложенные модули регистрируются с их точечным именем. Это позволяет различным модулям с одинаковым именем быть вложенными в разных местах.
Изменено в версии 2.0.1: Опция
nameможет быть использована для изменения имени модуля, с которым он зарегистрирован (до точечного разделителя). Это позволяет зарегистрировать один и тот же модуль несколько раз с уникальными именами дляurl_for.
-
-
register_blueprint(blueprint, **options) -
Зарегистрировать
Blueprintв данном модуле. Значения ключевых аргументов, переданные в этот метод, переопределят значения по умолчанию, заданные в модуле.Changelog
Изменено в версии 2.0.1: Параметр
nameможет быть использован для изменения (префиксного) имени, с которым регистрируется модуль. Это позволяет зарегистрировать один и тот же модуль несколько раз с уникальными именами дляurl_for.Добавлена в версии 2.0.
- Параметры:
-
- blueprint (Blueprint)
- options (Any)
- Тип возвращаемого значения:
-
None
-
register_error_handler(code_or_exception, f) -
Альтернативная функция для добавления обработчика ошибок к декоратору
errorhandler(). Более удобный вариант для использования без декораторов.Changelog
Добавлена в версии 0.7.
-
route(rule, **options) -
Декоратор для функций представления, регистрирующий их по заданному URL-правилу и параметрам. Использует
add_url_rule()для реализации (подробнее об реализации).@app.route("/") def index(): return "Hello, World!"См. Регистрация URL-маршрутов.
Имя конечной точки маршрута по умолчанию — это имя функции представления, если параметр
endpointне задан.Параметр
methodsпо умолчанию["GET"].HEADиOPTIONSдобавляются автоматически.
-
property static_folder: str | None -
Полный путь к папке со статическими файлами.
Noneесли папка статических файлов не задана.
-
property static_url_path: str | None -
Префикс URL, по которому доступны статические ресурсы.
Если не был сконфигурирован во время инициализации, выводится из
static_folder.
-
teardown_app_request(f) -
Аналогично
teardown_request(), но выполняется после каждого запроса, а не только тех, обработанных модулем. ЭквивалентноFlask.teardown_request().- Параметры:
-
f (T_teardown)
- Тип возвращаемого значения:
-
T_teardown
-
teardown_request(f) -
Регистрирует функцию, которая вызывается при извлечении контекста запроса. Обычно это происходит в конце каждого запроса, но контексты могут быть вручную установлены и во время тестирования.
with app.test_request_context(): ...Когда блок
withзавершается (или вызываетсяctx.pop()), функции разбора вызываются непосредственно перед тем, как контекст запроса становится неактивным.Когда функция разбора вызвана из-за необработанной ошибки, ей передаётся объект ошибки. Если зарегистрирован
errorhandler(), он обработает ошибку, и функция разбора её не получит.Функции разбора не должны вызывать исключений. Если они выполняют код, который может вызвать ошибку, они должны обернуть этот код в блок
try/exceptи регистрировать любые ошибки.Возвращаемые значения функций разбора игнорируются.
Доступно как для объектов приложения, так и для объектов Blueprint. При использовании с приложением, выполняется после каждого запроса. При использовании с Blueprint выполняется после каждого запроса, обработанного данным Blueprint. Для регистрации с Blueprint и выполнения после каждого запроса используйте
Blueprint.teardown_app_request().- Параметры:
-
f (T_teardown)
- Тип возвращаемого значения:
-
T_teardown
-
url_defaults(f) -
Функция обратного вызова для значений URL по умолчанию для всех функций представления приложения. Она вызывается с именем конечной точки и значениями и должна обновить переданные значения на месте.
Доступно как для объектов приложения, так и для объектов Blueprint. При использовании с приложением вызывается для каждого запроса. При использовании с Blueprint вызывается для запросов, обработанных данным Blueprint. Для регистрации с Blueprint и воздействия на каждый запрос, используйте
Blueprint.app_url_defaults().- Параметры:
-
f (T_url_defaults)
- Тип возвращаемого значения:
-
T_url_defaults
-
url_value_preprocessor(f) -
Регистрирует функцию предварительной обработки значений URL для всех функций представления в приложении. Эти функции вызываются до функций
before_request().Функция может изменять значения, полученные из сопоставленного URL, перед передачей их представлению. Например, это может использоваться для извлечения общего кода языка и размещения его в
gвместо передачи его каждой функции представления.Функция получает имя конечной точки и словарь значений. Возвращаемое значение игнорируется.
Доступно как для объектов приложения, так и для объектов Blueprint. При использовании с приложением вызывается для каждого запроса. При использовании с Blueprint вызывается для запросов, обработанных данным Blueprint. Для регистрации с Blueprint и воздействия на каждый запрос, используйте
Blueprint.app_url_value_preprocessor().- Параметры:
-
f (T_url_value_preprocessor)
- Тип возвращаемого значения:
-
T_url_value_preprocessor
-
import_name -
Имя пакета или модуля, к которому принадлежит этот объект. Не изменяйте его после установки конструктором.
-
template_folder -
Путь к папке с шаблонами, относительный к
root_path, для добавления в загрузчик шаблонов.Noneесли шаблоны не должны добавляться.
-
root_path -
Абсолютный путь к пакету в файловой системе. Используется для поиска ресурсов, содержащихся в пакете.
-
-
view_functions: dict[str, ft.RouteCallable] -
Словарь, сопоставляющий имена конечных точек функциям представления.
Для регистрации функции представления используйте декоратор
route().Эта структура данных внутренняя. Не следует изменять её напрямую, и её формат может измениться в любое время.
-
error_handler_spec: dict[ft.AppOrBlueprintKey, dict[int | None, dict[type[Exception], ft.ErrorHandlerCallable]]] -
Структура данных зарегистрированных обработчиков ошибок в формате
{scope: {code: {class: handler}}}. Ключscope— имя модуля, для которого активны обработчики, илиNoneдля всех запросов. Ключcode— код HTTP-статуса дляHTTPException, илиNoneдля других исключений. Внутренний словарь сопоставляет классы исключений функциям-обработчикам.Для регистрации обработчика ошибок используйте декоратор
errorhandler().Эта структура данных внутренняя. Не следует изменять её напрямую, и её формат может измениться в любое время.
-
before_request_funcs: dict[ft.AppOrBlueprintKey, list[ft.BeforeRequestCallable]] -
Структура данных функций, вызываемых в начале каждого запроса, в формате
{scope: [functions]}. Ключscope— имя модуля, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
before_request().Эта структура данных внутренняя. Не следует изменять её напрямую, и её формат может измениться в любое время.
-
after_request_funcs: dict[ft.AppOrBlueprintKey, list[ft.AfterRequestCallable[t.Any]]] -
Структура данных функций, вызываемых в конце каждого запроса, в формате
{scope: [functions]}. Ключscope— имя модуля, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
after_request().Эта структура данных внутренняя. Не следует изменять её напрямую, и её формат может измениться в любое время.
-
teardown_request_funcs: dict[ft.AppOrBlueprintKey, list[ft.TeardownCallable]] -
Структура данных функций, которые вызываются в конце каждого запроса, даже если возникло исключение, в формате
{scope: [functions]}. Ключscope— имя модуля, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
teardown_request().Эта структура данных внутренняя. Не следует изменять её напрямую, и её формат может измениться в любое время.
-
template_context_processors: dict[ft.AppOrBlueprintKey, list[ft.TemplateContextProcessorCallable]] -
Структура данных функций, вызываемых для передачи дополнительных значений контекста при отрисовке шаблонов, в формате
{scope: [functions]}. Ключscope— имя модуля, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
context_processor().Эта структура данных внутренняя. Не следует изменять её напрямую, и её формат может измениться в любое время.
-
url_value_preprocessors: dict[ft.AppOrBlueprintKey, list[ft.URLValuePreprocessorCallable]] -
Структура данных функций, вызываемых для изменения ключевых аргументов, передаваемых функции представления, в формате
{scope: [functions]}. Ключscope— имя модуля, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
url_value_preprocessor().Эта структура данных внутренняя. Не следует изменять её напрямую, и её формат может измениться в любое время.
-
url_default_functions: dict[ft.AppOrBlueprintKey, list[ft.URLDefaultCallable]] -
Структура данных функций, вызываемых для изменения ключевых аргументов при генерации URL-адресов, в формате
{scope: [functions]}. Ключscope— имя модуля, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
url_defaults().Эта структура данных внутренняя. Не следует изменять её напрямую, и её формат может измениться в любое время.
-
Данные входящего запроса
-
class flask.Request(environ, populate_request=True, shallow=False) -
Объект запроса, используемый по умолчанию в Flask. Запоминает сопоставленный конечный пункт и аргументы представления.
Он используется как
request. Если вы хотите заменить объект запроса, вы можете создать его подкласс и установитьrequest_classна свой подкласс.Объект запроса является подклассом
Requestи предоставляет все атрибуты, определенные Werkzeug, плюс несколько специфичных для Flask.-
url_rule: Rule | None = None -
Внутреннее правило URL, которое сопоставилось с запросом. Это может быть полезно для проверки разрешенных методов для URL из обработчика до/после (
request.url_rule.methods) и т. д. Однако, если метод запроса был некорректен для правила URL, список допустимых значений доступен вrouting_exception.valid_methods(атрибут исключения WerkzeugMethodNotAllowed), так как запрос никогда не был внутренне связан.Изменения
Добавлен в версии 0.6.
-
view_args: dict[str, t.Any] | None = None -
Словарь аргументов представления, которые сопоставились с запросом. Если при сопоставлении произошла ошибка, это будет
None.
-
routing_exception: HTTPException | None = None -
Если сопоставление URL не удалось, это исключение, которое будет поднято/было поднято в рамках обработки запроса. Обычно это исключение
NotFoundили что-то подобное.
-
property max_content_length: int | None -
Максимальное количество байтов, которое будет прочитано во время этого запроса. Если этот лимит превышен, возникает ошибка 413
RequestEntityTooLarge. Если он установлен вNone, лимит на уровне приложения Flask не применяется. Однако, если он установлен вNoneи запрос не имеет заголовкаContent-Length, а WSGI-сервер не указывает, что он прерывает поток, то данные не читаются, чтобы избежать бесконечного потока.Каждый запрос по умолчанию использует конфигурацию
MAX_CONTENT_LENGTH, которая по умолчанию равнаNone. Он может быть установлен для конкретногоrequestдля применения лимита к этому конкретному представлению. Это следует устанавливать в соответствии с конкретными потребностями приложения или представления.Изменено в версии 3.1: Это можно установить для каждого запроса.
Изменения
Изменено в версии 0.6: Это настраивается через конфигурацию Flask.
-
property max_form_memory_size: int | None -
Максимальный размер в байтах для любого не-файлового поля формы в теле
multipart/form-data. Если этот лимит превышен, возникает ошибка 413RequestEntityTooLarge. Если он установлен вNone, лимит на уровне приложения Flask не применяется.Каждый запрос по умолчанию использует конфигурацию
MAX_FORM_MEMORY_SIZE, которая по умолчанию равна500_000. Он может быть установлен для конкретногоrequestдля применения лимита к этому конкретному представлению. Это следует устанавливать в соответствии с конкретными потребностями приложения или представления.Изменено в версии 3.1: Это настраивается через конфигурацию Flask.
-
property max_form_parts: int | None -
Максимальное количество полей, которые могут присутствовать в теле
multipart/form-data. Если этот лимит превышен, возникает ошибка 413RequestEntityTooLarge. Если он установлен вNone, лимит на уровне приложения Flask не применяется.Каждый запрос по умолчанию использует конфигурацию
MAX_FORM_PARTS, которая по умолчанию равна1_000. Он может быть установлен для конкретногоrequestдля применения лимита к этому конкретному представлению. Это следует устанавливать в соответствии с конкретными потребностями приложения или представления.Изменено в версии 3.1: Это настраивается через конфигурацию Flask.
-
property endpoint: str | None -
Конечный пункт, который сопоставился с URL запроса.
Будет
Noneесли сопоставление не удалось или ещё не выполнено.В сочетании с
view_argsможет использоваться для восстановления того же URL или измененного URL.
-
property blueprint: str | None -
Зарегистрированное имя текущего модуля Blueprint.
Будет
Noneесли конечный пункт не является частью модуля Blueprint, или если сопоставление URL не удалось или еще не выполнено.Это не обязательно совпадает с именем, с которым был создан модуль Blueprint. Он может быть вложенным или зарегистрированным с другим именем.
-
property blueprints: list[str] -
Зарегистрированные имена текущего модуля Blueprint, вверх по цепочке родительских Blueprint.
Будет пустым списком, если нет текущего Blueprint или сопоставление URL не удалось.
Изменения
Добавлен в версии 2.0.1.
-
on_json_loading_failed(e) -
Вызывается, если
get_json()терпит неудачу и не подавляется.Если этот метод возвращает значение, оно используется в качестве значения возврата для
get_json(). По умолчанию, поднимаетBadRequest.- Параметры:
-
e (ValueError | None) – Если произошла ошибка при парсинге, это исключение. Будет
Noneесли тип контента неapplication/json. - Тип возвращаемого значения:
Изменения
Изменено в версии 2.3: Поднимает ошибку 415 вместо 400.
-
property accept_charsets: CharsetAccept -
Список наборов символов, поддерживаемых этим клиентом, как объект
CharsetAccept.
-
property accept_encodings: Accept -
Список кодировок, которые принимает этот клиент. Кодировки в терминологии HTTP — это кодировки сжатия, такие как gzip. Для наборов символов см.
accept_charset.
-
property accept_languages: LanguageAccept -
Список языков, которые принимает этот клиент, как объект
LanguageAccept.
-
property accept_mimetypes: MIMEAccept -
Список MIME-типов, которые поддерживает этот клиент, как объект
MIMEAccept.
-
access_control_request_headers -
Отправляется с запросом предварительного запроса, чтобы указать, какие заголовки будут отправлены с запросом междоменной связи. Установите
access_control_allow_headersв ответе, чтобы указать, какие заголовки разрешены.
-
-
access_control_request_method -
Отправляется с предварительным запросом, чтобы указать, какой метод будет использоваться для запроса к другому источнику. Установите
access_control_allow_methodsв ответе, чтобы указать, какие методы разрешены.
-
property access_route: list[str] -
Если существует заголовок forwarded, это список всех IP-адресов от IP-адреса клиента до последнего прокси-сервера.
-
classmethod application(f) -
Декорирует функцию как обработчик запроса, который принимает запрос в качестве последнего аргумента. Это работает так же, как декоратор
responder(), но функция получает объект запроса в качестве последнего аргумента, и объект запроса будет автоматически закрыт:@Request.application def my_wsgi_app(request): return Response('Hello World!')Начиная с Werkzeug 0.14, HTTP-исключения автоматически перехватываются и преобразуются в ответы вместо сбоя.
- Параметры:
-
f (t.Callable[[Запрос], WSGIApplication]) – вызываемый WSGI, который нужно декорировать
- Возвращает:
-
новый вызываемый WSGI
- Тип возвращаемого значения:
-
WSGIApplication
-
property args: MultiDict[str, str] -
Обработанные параметры URL (часть в URL после знака вопроса).
По умолчанию из этой функции возвращается
ImmutableMultiDict. Это можно изменить, установивparameter_storage_classна другой тип. Это может потребоваться, если порядок данных формы важен.Журнал изменений
Изменено в версии 2.3: Неверные байты остаются в процентах закодированными.
-
property authorization: Authorization | None -
Заголовок
Authorizationобработано в объектAuthorization.Noneесли заголовок отсутствует.Журнал изменений
Изменено в версии 2.3:
Authorizationбольше не являетсяdict. Добавлено атрибутtokenдля схем авторизации, использующих токен вместо параметров.
-
property base_url: str -
Как
url, но без строки запроса.
-
property cache_control: RequestCacheControl -
Объект
RequestCacheControlдля входящих заголовков управления кэшем.
-
close() -
Закрывает связанные ресурсы этого объекта запроса. Это закрывает все дескрипторы файлов явно. Вы также можете использовать объект запроса в операторе with, который автоматически его закроет.
Журнал изменений
Добавлен в версии 0.9.
- Тип возвращаемого значения:
-
None
-
content_encoding -
Поле заголовка сущности Content-Encoding используется в качестве модификатора типа содержимого. При его наличии значение указывает, какие дополнительные кодировки содержимого были применены к телу сущности, и, следовательно, какие механизмы декодирования необходимо применить для получения типа содержимого, указанного в заголовке Content-Type.
Журнал изменений
Добавлен в версии 0.9.
-
property content_length: int | None -
Поле заголовка сущности Content-Length указывает размер тела сущности в байтах или, в случае метода HEAD, размер тела сущности, который был бы отправлен, если бы запрос был GET.
-
content_md5 -
Поле заголовка сущности Content-MD5, как определено в RFC 1864, представляет собой дайджест MD5 тела сущности для обеспечения проверки целостности сообщения (MIC) тела сущности от конца до конца. (Примечание: MIC подходит для обнаружения случайного изменения тела сущности во время передачи, но не является доказательством от злонамеренных атак.)
Журнал изменений
Добавлен в версии 0.9.
-
content_type -
Поле заголовка сущности Content-Type указывает тип содержимого тела сущности, отправленного получателю, или, в случае метода HEAD, тип содержимого, который был бы отправлен, если бы запрос был GET.
-
property cookies: ImmutableMultiDict[str, str] -
dictс содержимым всех файлов cookie, переданных с запросом.
-
property data: bytes -
Необработанные данные, считанные из
stream. Будет пустым, если запрос представляет данные формы.Чтобы получить необработанные данные, даже если они представляют данные формы, используйте
get_data().
-
date -
Поле общего заголовка Date представляет дату и время, в которое было создано сообщение, имеющее ту же семантику, что и orig-date в RFC 822.
Журнал изменений
Изменено в версии 2.0: Объект datetime является часовым поясом.
-
dict_storage_class -
псевдоним
ImmutableMultiDict
-
property files: ImmutableMultiDict[str, FileStorage] -
MultiDictобъект, содержащий все загруженные файлы. Каждый ключ вfiles— это имя из<input type="file" name="">. Каждое значение вfiles— это объект WerkzeugFileStorage.В основном он ведет себя как обычный объект файла, известный из Python, с той разницей, что он также имеет функцию
save(), которая может сохранить файл на файловой системе.Обратите внимание, что
filesбудет содержать данные только в том случае, если метод запроса был POST, PUT или PATCH, и<form>в запросе имелenctype="multipart/form-data". В противном случае он будет пустым.Для получения дополнительной информации об используемой структуре данных см. документацию
MultiDict/FileStorage.
-
property form: ImmutableMultiDict[str, str] -
Параметры формы. По умолчанию из этой функции возвращается
ImmutableMultiDict. Это можно изменить, установивparameter_storage_classна другой тип. Это может потребоваться, если порядок данных формы важен.Пожалуйста, имейте в виду, что загрузки файлов не попадут сюда, а вместо этого в атрибут
files.Журнал изменений
Изменено в версии 0.9: До Werkzeug 0.9 это содержало только данные формы для запросов POST и PUT.
-
form_data_parser_class -
псевдоним
FormDataParser
-
-
classmethod from_values(*args, **kwargs) -
Создайте новый объект запроса на основе предоставленных значений. Если задан environ, пропущенные значения заполняются из него. Этот метод полезен для небольших скриптов, когда вам нужно смоделировать запрос из URL. Не используйте этот метод для тестирования на единицу, существует полноценный объект клиента (
Client), который позволяет создавать запросы с несколькими частями, поддерживает куки и т. д.Он принимает те же параметры, что и
EnvironBuilder.Журнал изменений
Изменено в версии 0.5: Теперь этот метод принимает те же аргументы, что и
EnvironBuilder. Из-за этого параметрenvironтеперь называетсяenviron_overrides.
-
property full_path: str -
Запрашиваемый путь, включая строку запроса.
-
get_data(cache=True, as_text=False, parse_form_data=False) -
Это считывает буферизованные входящие данные от клиента в один объект байтов. По умолчанию это кэшируется, но это поведение можно изменить, установив
cacheвFalse.Обычно не рекомендуется вызывать этот метод, не проверив сначала длину содержимого, так как клиент может отправлять десятки мегабайт или более, что может привести к проблемам с памятью на сервере.
Обратите внимание, что если данные формы уже обработаны, этот метод ничего не вернет, так как обработка данных формы не кэширует данные, как этот метод. Чтобы неявным образом вызвать функцию обработки данных формы, установите
parse_form_dataвTrue. При этом возвращаемое значение этого метода будет пустой строкой, если обработчик формы обрабатывает данные. Это, как правило, не требуется, так как если все данные кэшируются (что является стандартным значением), обработчик формы будет использовать кэшированные данные для обработки данных формы. В любом случае обязательно проверяйте длину содержимого перед вызовом этого метода, чтобы избежать истощения оперативной памяти сервера.Если
as_textустановлено вTrue, возвращаемое значение будет закодированной строкой.Журнал изменений
Добавлен в версии 0.9.
-
get_json(force=False, silent=False, cache=True) -
Обработать
dataкак JSON.Если тип MIME не указывает JSON (application/json, см.
is_json), или разбор завершается ошибкой, вызываетсяon_json_loading_failed(), и возвращаемое значение используется как возвращаемое значение. По умолчанию это вызывает ответ 415 «Неподдерживаемый тип медиа».- Параметры:
- Тип возвращаемого значения:
-
Any | None
Журнал изменений
Изменено в версии 2.3: Возбудить ошибку 415 вместо 400.
Изменено в версии 2.1: Возбудить ошибку 400, если тип содержимого неверен.
-
property host: str -
Имя хоста, к которому был сделан запрос, включая порт, если он нестандартный. Проверяется с помощью
trusted_hosts.
-
property host_url: str -
Схема URL запроса и только хост.
-
property if_match: ETags -
Объект, содержащий все теги в
If-Matchзаголовке.- Тип возвращаемого значения:
-
property if_modified_since: datetime | None -
Обработанный
If-Modified-Sinceзаголовок в виде объекта datetime.Журнал изменений
Изменено в версии 2.0: Объект datetime имеет часовой пояс.
-
property if_none_match: ETags -
Объект, содержащий все теги в
If-None-Matchзаголовке.- Тип возвращаемого значения:
-
property if_range: IfRange -
Обработанный
If-Rangeзаголовок.Журнал изменений
Изменено в версии 2.0:
IfRange.dateимеет часовой пояс.Добавлен в версии 0.7.
-
property if_unmodified_since: datetime | None -
Обработанный
If-Unmodified-Sinceзаголовок в виде объекта datetime.Журнал изменений
Изменено в версии 2.0: Объект datetime имеет часовой пояс.
-
input_stream -
Исходный поток ввода WSGI без проверок безопасности.
Использование опасно. Он не защищает от бесконечных потоков или чтения после
content_lengthилиmax_content_length.Используйте
streamвместо этого.
-
property is_json: bool -
Проверить, указывает ли тип MIME данные JSON, либо application/json, либо application/*+json.
-
is_multiprocess -
булево значение, которое равно
Trueесли приложение обслуживается сервером WSGI, который создает несколько процессов.
-
is_multithread -
булево значение, которое равно
Trueесли приложение обслуживается многопоточным сервером WSGI.
-
-
is_run_once -
булево значение,
Trueесли приложение будет выполнено только один раз за время существования процесса. Это, например, случай с CGI, но не гарантируется, что выполнение произойдёт только один раз.
-
property is_secure: bool -
Trueесли запрос был отправлен с помощью защищённого протокола (HTTPS или WSS).
-
property json: Any | None -
Разбор данных JSON, если
mimetypeуказывает на JSON (application/json, см.is_json).Вызывает
get_json()с параметрами по умолчанию.Если тип содержимого запроса не
application/json, произойдёт ошибка 415 Unsupported Media Type.Changelog
Изменено в версии 2.3: Выводится ошибка 415 вместо 400.
Изменено в версии 2.1: Выводится ошибка 400, если тип содержимого некорректен.
-
list_storage_class -
Псевдоним для
ImmutableList
-
make_form_data_parser() -
Создаёт парсер данных формы. Создаёт экземпляр
form_data_parser_classс некоторыми параметрами.Changelog
Добавлена в версии 0.8.
- Возвращаемый тип:
-
max_forwards -
Поле заголовка запроса Max-Forwards предоставляет механизм для методов TRACE и OPTIONS, ограничивая количество прокси-серверов или шлюзов, которые могут перенаправлять запрос следующему серверу.
-
property mimetype: str -
Аналогично
content_type, но без параметров (например, без кодировки, типа и т. д.) и всегда в нижнем регистре. Например, если тип содержимогоtext/HTML; charset=utf-8, то mimetype будет'text/html'.
-
property mimetype_params: dict[str, str] -
Параметры mimetype в виде словаря. Например, если тип содержимого
text/html; charset=utf-8, то параметры будут{'charset': 'utf-8'}.
-
origin -
Хост, откуда исходит запрос. Установите
access_control_allow_originв ответе, чтобы указать разрешённые источники.
-
parameter_storage_class -
Псевдоним для
ImmutableMultiDict
-
property pragma: HeaderSet -
Поле заголовка Pragma используется для включения реализационных директив, которые могут применяться к любому получателю в цепочке запрос/ответ. Все директивы Pragma указывают на необязательное поведение с точки зрения протокола; однако некоторые системы МОГУТ потребовать, чтобы поведение соответствовало этим директивам.
-
property range: Range | None -
Обработанное поле заголовка
Range.Changelog
Добавлена в версии 0.7.
- Возвращаемый тип:
-
referrer -
Поле заголовка Referer позволяет клиенту указать (для удобства сервера) адрес (URI) ресурса, из которого был получен Request-URI (используется «referrer», хотя поле заголовка написано с ошибкой).
-
remote_user -
Если сервер поддерживает аутентификацию пользователя и сценарий защищён, это свойство содержит имя пользователя, под которым пользователь авторизовался.
-
property root_url: str -
Схема, хост и корневой путь URL запроса. Это корень, из которого осуществляется доступ к приложению.
-
property script_root: str -
Псевдоним для
self.root_path.environ["SCRIPT_ROOT"]без заключительного слэша.
-
property stream: IO[bytes] -
Поток входных данных WSGI с проверками безопасности. Этот поток можно использовать только один раз.
Используйте
get_data(), чтобы получить полные данные в виде байтов или текста. Свойствоdataбудет содержать полные байты только в том случае, если они не представляют данные формы. Свойствоformв этом случае будет содержать обработанные данные формы.В отличие от
input_stream, этот поток защищает от бесконечных потоков или чтения за пределамиcontent_lengthилиmax_content_length.Если
max_content_lengthустановлено, он может быть применён к потокам, еслиwsgi.input_terminatedустановлено. В противном случае возвращается пустой поток.Если ограничение достигнуто до того, как исчерпан основной поток (например, файл слишком большой или бесконечный поток), оставшиеся данные потока безопасно считать нельзя. В зависимости от того, как сервер обрабатывает эту ситуацию, клиенты могут столкнуться с ошибкой «разрыв соединения» вместо показа 413 ответа.
Changelog
Изменено в версии 2.3: Проверяется
max_content_lengthпредварительно и во время чтения.Изменено в версии 0.9: Поток всегда устанавливается (но может быть использован), даже если сначала был вызван парсер формы.
-
trusted_hosts: list[str] | None = None -
Допустимые имена хостов при обработке запросов. По умолчанию все хосты доверяются, что означает принятие того, что клиент указывает в качестве хоста.
Поскольку заголовки
HostиX-Forwarded-Hostмогут быть установлены любым значением вредоносным клиентом, рекомендуется установить это свойство или реализовать аналогичную проверку в прокси (если приложение запущено за ним).Changelog
Добавлена в версии 0.9.
-
property url: str -
Полный URL запроса со схемой, хостом, корневым путём, путём и строкой запроса.
-
property url_root: str -
Псевдоним для
root_url. URL со схемой, хостом и корневым путём. Например,https://example.com/app/.
-
property user_agent: UserAgent -
Пользовательский агент. Используйте
user_agent.stringдля получения значения заголовка. Установитеuser_agent_classна подклассUserAgent, чтобы предоставить разбор для других свойств или других расширенных данных.Changelog
Изменено в версии 2.1: Встроенный парсер был удалён. Установите
user_agent_classна подклассUserAgentдля разбора данных из строки.
-
user_agent_class -
Псевдоним для
UserAgent
-
-
property values: CombinedMultiDict[str, str] -
A
werkzeug.datastructures.CombinedMultiDictthat combinesargsandform.For GET requests, only параметры запроса are present, not значения тела запроса.
Changelog
Изменено в версии 2.0: For GET requests, only параметры запроса are present, not значения тела запроса.
-
property want_form_data_parsed: bool -
Trueесли метод запроса передаёт содержимое. По умолчанию это True, если отправляетсяContent-Type.Changelog
Добавлен в версии 0.8.
-
environ: WSGIEnvironment -
WSGI-среда, содержащая HTTP-заголовки и информацию от WSGI-сервера.
-
shallow: bool -
Устанавливается при создании объекта запроса. Если
True, чтение из тела запроса вызоветRuntimeException. Полезно для предотвращения изменения потока из middleware.
-
method -
Метод, с помощью которого был отправлен запрос, например
GET.
-
scheme -
Схема URL протокола запроса, например
httpsилиwss.
-
server -
Адрес сервера.
(host, port),(path, None)для сокетов Unix, илиNoneесли неизвестен.
-
root_path -
Префикс, под которым применено приложение, без заключительного слэша.
pathследует за этим.
-
path -
Часть пути URL после
root_path. Это путь, используемый для маршрутизации в приложении.
-
query_string -
Часть URL после “?”. Это значение в сыром виде, используйте
argsдля обработанных значений.
-
headers -
Заголовки, полученные с запросом.
-
remote_addr -
Адрес клиента, отправившего запрос.
-
-
flask.request -
Для доступа к данным входящего запроса можно использовать глобальный объект
request. Flask парсит данные входящего запроса для вас и предоставляет к ним доступ через этот глобальный объект. Внутренне Flask гарантирует, что вы всегда получаете правильные данные для активной нити, если вы работаете в многопоточной среде.Это прокси. Дополнительную информацию см. в Заметки о прокси.
Объект запроса — это экземпляр
Request.
Объекты ответов
-
class flask.Response(response=None, status=None, headers=None, mimetype=None, content_type=None, direct_passthrough=False) -
Объект ответа, используемый по умолчанию в Flask. Работает как объект ответа из Werkzeug, но по умолчанию устанавливает MIME-тип HTML. Часто вам не нужно создавать этот объект самостоятельно, поскольку
make_response()позаботится об этом за вас.Если вы хотите заменить используемый объект ответа, вы можете создать подкласс этого объекта и установить
response_classна свой подкласс.Журнал изменений
Изменено в версии 1.0: Поддержка JSON добавлена в ответ, как и в запросе. Это полезно при тестировании для получения данных ответа тестового клиента в формате JSON.
Изменено в версии 1.0: Добавлен
max_cookie_size.- Параметры:
-
default_mimetype: str | None = 'text/html' -
значение MIME-типа по умолчанию, если он не предоставлен.
-
accept_ranges -
Заголовок
Accept-Ranges. Несмотря на то, что имя предполагает поддержку нескольких значений, это должен быть только один строковый токен.Общие значения
'bytes'и'none'.Журнал изменений
Добавлен в версии 0.7.
-
property access_control_allow_credentials: bool -
Разрешает ли браузер делиться учетными данными с кодом JavaScript. В рамках запроса предварительной обработки указывает, можно ли использовать учетные данные при кросс-доменном запросе.
-
access_control_allow_headers -
Какие заголовки могут быть отправлены с кросс-доменным запросом.
-
access_control_allow_methods -
Какие методы могут использоваться для кросс-доменного запроса.
-
access_control_allow_origin -
Происхождение или «*» для любого источника, который может выполнять кросс-доменные запросы.
-
access_control_expose_headers -
Какие заголовки может использовать браузер для передачи в код JavaScript.
-
access_control_max_age -
Максимальное время в секундах, в течение которого настройки контроля доступа могут быть кэшированы.
-
add_etag(overwrite=False, weak=False) -
Добавление тега для текущего ответа, если его еще нет.
Журнал изменений
Изменено в версии 2.0: Для генерации значения используется SHA-1. MD5 может быть недоступен в некоторых средах.
-
age -
Поле заголовка ответа Age указывает оценку отправителем времени, прошедшего с момента генерации ответа (или его повторной валидации) на сервере источника.
Значения Age — это неотрицательные десятичные целые числа, представляющие время в секундах.
-
property allow: HeaderSet -
Поле сущностного заголовка Allow перечисляет набор методов, поддерживаемых ресурсом, идентифицированным Request-URI. Цель этого поля — информировать получателя о допустимых методах, связанных с ресурсом. Заголовок Allow ОБЯЗАТЕЛЬНО должен присутствовать в ответе 405 (Method Not Allowed).
-
automatically_set_content_length = True -
Должен ли этот объект ответа автоматически устанавливать заголовок content-length, если это возможно? По умолчанию это значение истинно.
Журнал изменений
Добавлен в версии 0.8.
-
property cache_control: ResponseCacheControl -
Поле общего заголовка Cache-Control используется для указания директив, которые ОБЯЗАТЕЛЬНО должны выполняться всеми механизмами кэширования вдоль цепочки запрос/ответ.
-
calculate_content_length() -
Возвращает длину содержимого, если она доступна, или
Noneв противном случае.- Тип возвращаемого значения:
-
int | None
-
call_on_close(func) -
Добавляет функцию в внутренний список функций, которые должны вызываться при закрытии ответа. Начиная с версии 0.7, эта функция также возвращает переданную функцию, чтобы её можно было использовать как декоратор.
Журнал изменений
Добавлен в версии 0.6.
-
close() -
Закрытие обернутого ответа, если это возможно. Вы также можете использовать объект в операторе with, который автоматически закроет его.
Журнал изменений
Добавлен в версии 0.9: Теперь можно использовать в операторе with.
- Тип возвращаемого значения:
-
None
-
content_encoding -
Поле сущностного заголовка Content-Encoding используется как модификатор к медиа-типу. При наличии его значение указывает, какие дополнительные кодировки содержимого были применены к телу сущности, а следовательно, какие механизмы декодирования должны быть применены для получения медиа-типа, указанного в заголовке Content-Type.
-
property content_language: HeaderSet -
Поле сущностного заголовка Content-Language описывает естественный язык(и) целевой аудитории для включенной сущности. Обратите внимание, что это может не совпадать со всеми языками, используемыми в теле сущности.
-
content_length -
Поле сущностного заголовка Content-Length указывает размер тела сущности в десятичном виде байтов, отправленных получателю, или, в случае метода HEAD, размер тела сущности, который был бы отправлен, если бы запрос был GET.
-
content_location -
Поле заголовка сущности Content-Location МОЖЕТ использоваться для предоставления местоположения ресурса для сущности, заключённой в сообщении, когда эта сущность доступна из местоположения, отличного от URI запрошенного ресурса.
-
content_md5 -
Поле заголовка сущности Content-MD5, как определено в RFC 1864, представляет собой хеш-код MD5 тела сущности для обеспечения проверки целостности сообщения от начала до конца (MIC) тела сущности. (Примечание: MIC подходит для обнаружения случайного изменения тела сущности во время передачи, но не является доказательством защиты от злонамеренных атак.)
-
property content_range: ContentRange -
Заголовок
Content-Rangeв виде объектаContentRange. Доступен даже если заголовок не задан.Changelog
Добавлен в версии 0.7.
-
property content_security_policy: ContentSecurityPolicy -
Заголовок
Content-Security-Policyв виде объектаContentSecurityPolicy. Доступен даже если заголовок не задан.Заголовок Content-Security-Policy добавляет дополнительный уровень безопасности для выявления и смягчения определенных типов атак.
-
property content_security_policy_report_only: ContentSecurityPolicy -
Заголовок
Content-Security-policy-report-onlyв виде объектаContentSecurityPolicy. Доступен даже если заголовок не задан.Заголовок Content-Security-Policy-Report-Only добавляет политику CSP, которая не принуждается к выполнению, но отчитывается, тем самым помогая обнаружить определенные типы атак.
-
content_type -
Поле заголовка сущности Content-Type указывает тип носителя тела сущности, отправляемого получателю, или, в случае метода HEAD, тип носителя, который был бы отправлен, если бы запрос был GET.
-
cross_origin_embedder_policy -
Предотвращает загрузку документа любых ресурсов из другого источника, которые явно не предоставляют документу разрешение. Значения должны быть элементом перечисления
werkzeug.http.COEP.
-
cross_origin_opener_policy -
Позволяет управлять совместным использованием группы контекстов просмотра с документами из других источников. Значения должны быть элементом перечисления
werkzeug.http.COOP.
-
property data: bytes | str -
Дескриптор, который вызывает
get_data()иset_data().
-
date -
Поле общего заголовка Date представляет собой дату и время, в которые было создано сообщение, имеющее те же семантические значения, что и orig-date в RFC 822.
Changelog
Изменено в версии 2.0: Объект datetime имеет часовой пояс.
-
default_status = 200 -
Значение состояния по умолчанию, если оно не указано.
-
delete_cookie(key, path='/', domain=None, secure=False, httponly=False, samesite=None, partitioned=False) -
Удаляет cookie. Без ошибок, если ключ не существует.
- Параметры:
-
- key (str) – ключ (имя) cookie, который необходимо удалить.
- path (str | None) – если cookie, который нужно удалить, был ограничен путем, путь необходимо определить здесь.
- domain (str | None) – если cookie, который нужно удалить, был ограничен доменом, этот домен необходимо определить здесь.
-
secure (bool) – Если
True, cookie будет доступен только через HTTPS. - httponly (bool) – Запрещает доступ JavaScript к cookie.
- samesite (str | None) – Ограничивает область действия cookie только запросами, которые являются «однодоменными».
-
partitioned (bool) – Если
True, cookie будет разделен.
- Тип возвращаемого значения:
-
None
-
expires -
Поле заголовка сущности Expires указывает дату/время после которого ответ считается устаревшим. Кэшированный элемент, который устарел, обычно не возвращается кэшем.
Changelog
Изменено в версии 2.0: Объект datetime имеет часовой пояс.
-
classmethod force_type(response, environ=None) -
Принудительно устанавливает, что WSGI-ответ является объектом ответа текущего типа. Werkzeug будет использовать
Responseвнутри во многих ситуациях, таких как исключения. Если вы вызоветеget_response()для исключения, вы получите обычный объектResponse, даже если вы используете пользовательское подклассирование.Этот метод может принудительно установить заданный тип ответа, а также преобразовать произвольные вызываемые WSGI-функции в объекты ответа, если предоставлен environ:
# convert a Werkzeug response object into an instance of the # MyResponseClass subclass. response = MyResponseClass.force_type(response) # convert any WSGI application into a response object response = MyResponseClass.force_type(response, environ)
Это особенно полезно, если вы хотите обработать ответы в главном диспетчере и использовать функции, предоставляемые вашим подклассом.
Обратите внимание, что это изменит объекты ответа на месте, если это возможно!
-
freeze() -
Подготавливает объект ответа к сериализации. Делает следующее:
- Буферизует ответ в список, игнорируя
implicity_sequence_conversionиdirect_passthrough. - Устанавливает заголовок
Content-Length. - Генерирует заголовок
ETagесли он ещё не установлен.
Changelog
Изменено в версии 2.1: Удалён параметр
no_etag.Изменено в версии 2.0: Заголовок
ETagвсегда добавляется.Изменено в версии 0.6: Установлен заголовок
Content-Length.- Тип возвращаемого значения:
-
None
- Буферизует ответ в список, игнорируя
-
classmethod from_app(app, environ, buffered=False) -
Создаёт новый объект ответа из вывода приложения. Лучше всего работает, если вы передаёте приложение, которое всегда возвращает генератор. Иногда приложения могут использовать вызываемую функцию
write()возвращённую функциейstart_response. Это пытается автоматически разрешить такие крайние случаи. Но если вы не получаете ожидаемый вывод, вы должны установитьbufferedвTrue, что принудительно выполняет буферизацию.
-
-
get_app_iter(environ) -
Возвращает итератор приложения для данного окружения. В зависимости от метода запроса и текущего кода состояния возвращаемое значение может быть пустым ответом, а не тем, что из ответа.
Если метод запроса
HEAD, или код состояния находится в диапазоне, где спецификация HTTP требует пустого ответа, возвращается пустая итерируемая последовательность.Изменения
Добавлена в версии 0.6.
- Параметры:
-
environ (WSGIEnvironment) – окружение WSGI запроса.
- Возвращаемое значение:
-
итерируемый объект ответа.
- Тип возвращаемого значения:
-
t.Iterable[байты]
-
get_data(as_text=False) -
Строковое представление тела ответа. Каждый раз, когда вы вызываете это свойство, итерируемый объект ответа кодируется и сглаживается. Это может привести к нежелательному поведению при работе с большими данными.
Это поведение можно отключить, установив
implicit_sequence_conversionвFalse.Если
as_textустановлено вTrue, возвращаемое значение будет декодированной строкой.Изменения
Добавлена в версии 0.9.
-
get_etag() -
Возвращает кортеж в формате
(etag, is_weak). Если ETag отсутствует, возвращаемое значение(None, None).
-
get_json(force=False, silent=False) -
Парсит
dataкак JSON. Полезно во время тестирования.Если тип MIME не указывает JSON (application/json, см.
is_json), это возвращаетNone.В отличие от
Request.get_json(), результат не кэшируется.
-
get_wsgi_headers(environ) -
Автоматически вызывается перед запуском ответа и возвращает заголовки, измененные для данного окружения. Возвращает копию заголовков из ответа с некоторыми изменениями, если это необходимо.
Например, заголовок местоположения (если он есть) объединяется с корневым URL-адресом окружения. Также длина содержимого автоматически устанавливается в ноль для определенных кодов состояния.
Изменения
Изменено в версии 0.6: Ранее эта функция называлась
fix_headersи изменяла объект ответа на месте. Также начиная с версии 0.6, IRIs в заголовках местоположения и местоположения содержимого обрабатываются корректно.Также начиная с версии 0.6, Werkzeug попытается установить длину содержимого, если сможет это сделать самостоятельно. Это имеет место, если все строки в итерируемом объекте ответа уже закодированы, и итерируемый объект буферизован.
- Параметры:
-
environ (WSGIEnvironment) – окружение WSGI запроса.
- Возвращаемое значение:
-
возвращает новый объект
Headers. - Тип возвращаемого значения:
-
Headers
-
get_wsgi_response(environ) -
Возвращает конечный ответ WSGI в виде кортежа. Первый элемент кортежа — итератор приложения, второй — код состояния, а третий — список заголовков. Возвращаемый ответ создается специально для данного окружения. Например, если метод запроса в окружении WSGI
'HEAD', ответ будет пустым, и будут присутствовать только заголовки и код состояния.Изменения
Добавлена в версии 0.6.
-
implicit_sequence_conversion = True -
если установлено в
False, доступ к свойствам объекта ответа не будет пытаться потреблять итератор ответа и преобразовывать его в список.Изменения
Добавлена в версии 0.6.2: Это свойство ранее называлось
implicit_seqence_conversion. (Обратите внимание на опечатку). Если вы использовали эту функцию, вам необходимо адаптировать свой код к изменению имени.
-
property is_json: bool -
Проверяет, указывает ли тип MIME данные JSON, либо application/json, либо application/*+json.
-
property is_sequence: bool -
Если итератор буферизован, это свойство будет
True. Объект ответа будет рассматривать итератор как буферизованный, если атрибут response является списком или кортежем.Изменения
Добавлена в версии 0.6.
-
property is_streamed: bool -
Если ответ передаётся по потокам (ответ не является итерируемым объектом с информацией о длине), это свойство
True. В этом случае передача по потокам означает, что нет информации о количестве итераций. Это обычноTrueв случае, если в объект ответа передаётся генератор.Это полезно для проверки перед применением некоторого пост-фильтра, который не должен применяться для потоковых ответов.
-
-
iter_encoded() -
Итерировать ответ, закодированный с помощью кодировки ответа. Если объект ответа вызывается как приложение WSGI, возвращаемое значение этого метода используется в качестве итератора приложения, если
direct_passthroughне был активирован.
-
property json: Any | None -
Разложенные данные JSON, если
mimetypeуказывает на JSON (application/json, см.is_json).Вызывает
get_json()с аргументами по умолчанию.
-
last_modified -
Поле заголовка сущности Last-Modified указывает дату и время, когда исходный сервер полагает, что вариант был изменён в последний раз.
Изменения
Изменено в версии 2.0: Объект datetime является осознающим часовой пояс.
-
location -
Поле заголовка ответа Location используется для перенаправления получателя в местоположение, отличное от Request-URI, для завершения запроса или идентификации нового ресурса.
-
make_conditional(request_or_environ, accept_ranges=False, complete_length=None) -
Устанавливает условие для ответа по отношению к запросу. Этот метод лучше всего работает, если для ответа уже был определён тег. Метод
add_etagможет использоваться для этого. Если вызов осуществляется без тега, устанавливается только заголовок даты.Ничего не делает, если метод запроса в запросе или среде отличается от GET или HEAD.
Для оптимальной производительности при обработке запросов на диапазон рекомендуется, чтобы ваш объект данных ответа реализовывал методы
seekable,seekиtell, как описано вio.IOBase. Объекты, возвращаемыеwrap_file(), автоматически реализуют эти методы.Не удаляет тело ответа, так как функция
__call__()делает это автоматически.Возвращает self, так что вы можете сделать
return resp.make_conditional(req), но изменяет объект на месте.- Параметры:
-
- request_or_environ (WSGIEnvironment | Запрос) – объект запроса или среда WSGI, используемая для условного установления ответа.
-
accept_ranges (bool | строка) – Этот параметр диктует значение заголовка
Accept-Ranges. ЕслиFalse, заголовок не устанавливается. ЕслиTrue, он будет установлен в"bytes". Если это строка, будет использовано это значение. -
complete_length (целое число | None) – Будет использоваться только в действительных запросах на диапазон. Он установит значение полной длины
Content-Rangeи вычислит фактическое значениеContent-Length. Этот параметр обязателен для успешного завершения запросов на диапазон.
- Возможные исключения:
-
RequestedRangeNotSatisfiable, если заголовокRangeне удалось разобрать или удовлетворить. - Тип возвращаемого значения:
Изменения
Изменено в версии 2.0: Обработка диапазона пропускается, если длина равна 0, вместо повышения ошибки 416 Range Not Satisfiable.
-
make_sequence() -
Преобразует итератор ответа в список. По умолчанию это происходит автоматически, если необходимо. Если
implicit_sequence_conversionотключен, этот метод не вызывается автоматически, и некоторые свойства могут вызвать исключения. Это также кодирует все элементы.Изменения
Добавлен в версии 0.6.
- Тип возвращаемого значения:
-
None
-
property mimetype: str | None -
Тип MIME (тип контента без набора символов и т. д.).
-
property mimetype_params: dict[str, str] -
Параметры типа MIME в виде словаря. Например, если тип контента
text/html; charset=utf-8, параметры будут{'charset': 'utf-8'}.Изменения
Добавлен в версии 0.5.
-
property retry_after: datetime | None -
Поле заголовка ответа Retry-After может использоваться с ответом 503 (Сервис недоступен), чтобы указать, как долго сервис, по оценке, будет недоступен для клиента-запрашивателя.
Время в секундах до истечения срока действия или дата.
Изменения
Изменено в версии 2.0: Объект datetime является осознающим часовой пояс.
-
set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=False, httponly=False, samesite=None, partitioned=False) -
Устанавливает куки.
Если размер заголовка cookie превышает
max_cookie_size, выдаётся предупреждение, но заголовок всё равно устанавливается.- Параметры:
-
- ключ (строка) – ключ (название) устанавливаемого cookie.
- значение (строка) – значение cookie.
-
max_age (timedelta | целое число | None) – количество секунд, или
None(по умолчанию), если cookie должен действовать только во время сессии браузера клиента. -
expires (строка | datetime | целое число | вещественное число | None) – объект
datetimeили временная метка UNIX. - путь (строка | None) – ограничивает cookie заданным путем, по умолчанию он охватывает весь домен.
-
домен (строка | None) – если вы хотите установить cookie для разных доменов. Например,
domain="example.com"установит cookie, который читается доменомwww.example.com,foo.example.comи т. д. В противном случае cookie будет читаться только тем доменом, который его установил. -
secure (bool) – Если
True, cookie будет доступен только через HTTPS. - httponly (bool) – Запрещает доступ JavaScript к cookie.
- samesite (строка | None) – Ограничивает область действия cookie тем, что он прикрепляется только к запросам «того же сайта».
-
разделенный (bool) – Если
True, cookie будет разделён.
- Тип возвращаемого значения:
-
None
Изменено в версии 3.1: Добавлен параметр
partitioned.
-
-
set_data(value) -
Устанавливает новую строку в качестве ответа. Значение должно быть строкой или байтами. Если устанавливается строка, она кодируется в кодировку ответа (по умолчанию utf-8).
Журнал изменений
Добавлена в версии 0.9.
-
set_etag(etag, weak=False) -
Устанавливает значение etag и перезаписывает старое, если оно было.
-
property status: str -
Код HTTP-статуса в виде строки.
-
property status_code: int -
Код HTTP-статуса в виде числа.
-
property stream: ResponseStream -
Итерируемый объект ответа в виде потока только для записи.
-
property vary: HeaderSet -
Значение поля Vary указывает набор заголовков запроса, полностью определяющих, в то время как ответ свежий, может ли кэш использовать ответ для ответа на последующий запрос без перепроверки.
-
property www_authenticate: WWWAuthenticate -
Заголовок
WWW-Authenticate, разобранный в объектWWWAuthenticate. Изменение объекта изменит значение заголовка.Этот заголовок не устанавливается по умолчанию. Чтобы установить этот заголовок, присвойте экземпляр
WWWAuthenticateэтому атрибуту.response.www_authenticate = WWWAuthenticate( "basic", {"realm": "Authentication Required"} )Для отправки клиенту нескольких вариантов можно задать несколько значений для этого заголовка. Присвойте список для установки нескольких заголовков. Однако изменение элементов списка не приведет к автоматическому обновлению значений заголовков, и доступ к этому атрибуту всегда вернёт только первое значение.
Чтобы сбросить этот заголовок, присвойте
Noneили используйтеdel.Журнал изменений
Изменено в версии 2.3: Этому атрибуту можно присвоить значение для установки заголовка. Список можно присвоить для установки нескольких значений заголовка. Используйте
delдля сброса заголовка.Изменено в версии 2.3:
WWWAuthenticateбольше не являетсяdict. Атрибутtokenбыл добавлен для вызовов аутентификации, использующих токен вместо параметров.
-
response: t.Iterable[str] | t.Iterable[bytes] -
Тело ответа для отправки как итерируемый объект WSGI. Список строк или байтов представляет фиксированный ответ, любой другой итерируемый объект — потоковый ответ. Строки кодируются в байты как UTF-8.
Не устанавливайте обычную строку или байты, это вызовет очень неэффективное отправление ответа, поскольку он будет итерироваться по одному байту за раз.
-
direct_passthrough -
Передать тело ответа непосредственно как итерируемый объект WSGI. Это можно использовать, когда тело — это двоичный файл или другой итератор байтов, чтобы пропустить некоторые ненужные проверки. Используйте
send_file()вместо ручного задания.
-
autocorrect_location_header = False -
Если заголовок перенаправления
Locationявляется относительным URL, преобразовать его в абсолютный URL, включая схему и домен.Журнал изменений
Изменено в версии 2.1: Это отключено по умолчанию, поэтому ответы будут отправлять относительные перенаправления.
Добавлена в версии 0.8.
-
property max_cookie_size: int -
Только для чтения представление конфигурационного ключа
MAX_COOKIE_SIZE.См.
max_cookie_sizeв документации Werkzeug.
-
Сессии
Если вы установили Flask.secret_key (или настроили его из SECRET_KEY) вы можете использовать сессии в приложениях Flask. Сессия позволяет сохранять информацию от одного запроса к другому. Flask делает это с помощью подписанного cookie. Пользователь может просмотреть содержимое сессии, но не может его изменить, если не знает секретный ключ, поэтому убедитесь, что он сложный и не угадываемый.
Для доступа к текущей сессии можно использовать объект session:
-
class flask.session -
Объект сессии работает примерно как обычный словарь, с той разницей, что отслеживает изменения.
Это прокси. См. Примечания о прокси для получения дополнительной информации.
Следующие атрибуты представляют интерес:
-
new -
Trueесли сессия новая,Falseв противном случае.
-
modified -
Trueесли объект сессии обнаружил изменение. Имейте в виду, что изменения в изменяемых структурах не подхватываются автоматически, в этом случае необходимо явно установить атрибут вTrueсамостоятельно. Вот пример:# this change is not picked up because a mutable object (here # a list) is changed. session['objects'].append(42) # so mark it as modified yourself session.modified = True
-
permanent -
Если установлено
True, сессия существует в течениеpermanent_session_lifetimeсекунд. По умолчанию — 31 день. Если установленоFalse(что является значением по умолчанию), сессия будет удалена при закрытии браузера.
-
Интерфейс сессии
Журнал изменений
Добавлена в версии 0.8.
Интерфейс сессии предоставляет простой способ заменить реализацию сессии, которую использует Flask.
-
class flask.sessions.SessionInterface -
Основной интерфейс, который необходимо реализовать для замены стандартного интерфейса сессий, использующего securecookie из werkzeug. Единственные методы, которые необходимо реализовать, это
open_session()иsave_session(), остальные имеют полезные значения по умолчанию, которые не нужно изменять.Объект сессии, возвращаемый методом
open_session(), должен предоставлять интерфейс наподобие словаря, а также свойства и методы изSessionMixin. Рекомендуется просто наследоваться от словаря и добавить этот миксин:class Session(dict, SessionMixin): passЕсли метод
open_session()возвращаетNoneFlask вызоветmake_null_session()для создания сессии-заместителя, если поддержка сессий не может работать из-за отсутствия какого-либо требования. По умолчанию созданный классNullSessionбудет жаловаться на то, что секретный ключ не задан.Чтобы заменить интерфейс сессий в приложении, необходимо присвоить значение
flask.Flask.session_interface:app = Flask(__name__) app.session_interface = MySessionInterface()
Несколько запросов с одной и той же сессией могут быть отправлены и обработаны одновременно. При реализации нового интерфейса сессий следует учитывать, необходимо ли синхронизировать чтение или запись в базовом хранилище. Нет гарантии порядка открытия или сохранения сессии для каждого запроса; это произойдет в порядке начала и окончания обработки запросов.
Изменения
Добавлена в версии 0.8.
-
null_session_class -
Здесь будет находиться класс, который должен быть создан при запросе нулевой сессии. Аналогичным образом метод
is_null_session()проведет проверку типа на соответствие этому типу.Алиас класса
NullSession
-
pickle_based = False -
Флаг, указывающий, использует ли интерфейс сессии механизм pickle. Расширения Flask могут использовать этот флаг для принятия решения о том, как обрабатывать объект сессии.
Изменения
Добавлена в версии 0.10.
-
make_null_session(app) -
Создает нулевую сессию, которая используется как замещающий объект, если реальная поддержка сессий не может быть загружена из-за ошибки конфигурации. Это в основном помогает пользователю, потому что задача нулевой сессии — поддерживать поиск без жалоб, но изменения сопровождаются полезным сообщением об ошибке, объясняющим, что не удалось.
По умолчанию создает экземпляр
null_session_class.- Параметры:
-
app (Flask)
- Возвращаемое значение:
-
is_null_session(obj) -
Проверяет, является ли данный объект нулевой сессией. От нулевых сессий не требуется сохранение.
По умолчанию проверяет, является ли объект экземпляром
null_session_class.
-
get_cookie_name(app) -
Имя cookie сессии. Использует ``app.config[“SESSION_COOKIE_NAME”]``.
-
get_cookie_domain(app) -
Значение параметра
Domainв cookie сессии. Если не задано, браузеры будут отправлять cookie только в домен, из которого он был задан. В противном случае они будут отправлять его и в любые поддомены указанного значения.Использует конфигурацию
SESSION_COOKIE_DOMAIN.Изменения
Изменено в версии 2.3: Не задано по умолчанию, не используется значение по умолчанию
SERVER_NAME.
-
get_cookie_path(app) -
Возвращает путь, для которого cookie должен быть действительным. Стандартная реализация использует значение из переменной конфигурации
SESSION_COOKIE_PATH, если она задана, иначе использует значение по умолчаниюAPPLICATION_ROOT, или/, если оноNone.
-
get_cookie_httponly(app) -
Возвращает True, если cookie сессии должен быть httponly. В настоящее время возвращает значение переменной конфигурации
SESSION_COOKIE_HTTPONLY.
-
get_cookie_secure(app) -
Возвращает True, если cookie должен быть secure. В настоящее время возвращает значение настройки
SESSION_COOKIE_SECURE.
-
get_cookie_samesite(app) -
Возвращает
'Strict'или'Lax', если cookie должен использовать атрибутSameSite. В настоящее время возвращает значение настройкиSESSION_COOKIE_SAMESITE.
-
-
get_cookie_partitioned(app) -
Возвращает True, если куки необходимо разделить. По умолчанию используется значение
SESSION_COOKIE_PARTITIONED.Добавлен в версии 3.1.
-
get_expiration_time(app, session) -
Вспомогательный метод, возвращающий дату истечения срока действия сессии или
Noneесли сессия связана с сессией браузера. По умолчанию возвращает текущее время + срок действия постоянной сессии, настроенный в приложении.- Parameters:
-
- app (Flask)
- session (SessionMixin)
- Return type:
-
datetime | None
-
should_set_cookie(app, session) -
Используется бэкендами сессий для определения, должен ли быть установлен заголовок
Set-Cookieдля данного куки сессии для данного ответа. Если сессия была изменена, куки устанавливается. Если сессия постоянная и конфигурацияSESSION_REFRESH_EACH_REQUESTимеет значение true, куки всегда устанавливается.Эта проверка обычно пропускается, если сессия была удалена.
Changelog
Добавлен в версии 0.11.
- Parameters:
-
- app (Flask)
- session (SessionMixin)
- Return type:
-
open_session(app, request) -
Вызывается в начале каждого запроса после добавления контекста запроса, до сопоставления URL.
Должен вернуть объект, реализующий интерфейс словаря, а также интерфейс
SessionMixin.Возвращает
Noneдля обозначения того, что загрузка не удалась по причине, которая не является непосредственной ошибкой. В этом случае контекст запроса вернётся к использованиюmake_null_session().- Parameters:
- Return type:
-
SessionMixin | None
-
save_session(app, session, response) -
Вызывается в конце каждого запроса после генерации ответа, до удаления контекста запроса. Пропускается, если
is_null_session()возвращаетTrue.- Parameters:
-
- app (Flask)
- session (SessionMixin)
- response (Response)
- Return type:
-
None
-
-
class flask.sessions.SecureCookieSessionInterface -
Интерфейс сессий по умолчанию, хранящий сессии в подписанных куках через модуль
itsdangerous.-
salt = 'cookie-session' -
соль, которая должна быть применена поверх секретного ключа для подписи сессий на основе куков.
-
static digest_method(string=b'') -
Функция хеширования для использования в подписи. По умолчанию используется sha1.
-
key_derivation = 'hmac' -
Название поддерживаемого itsdangerous метода получения ключа. По умолчанию используется hmac.
-
serializer = <flask.json.tag.TaggedJSONSerializer object> -
Python-сериализатор для полезной нагрузки. По умолчанию используется компактный JSON-сериализатор с поддержкой некоторых дополнительных типов Python, таких как объекты datetime или кортежи.
-
session_class -
Псевдоним
SecureCookieSession
-
open_session(app, request) -
Вызывается в начале каждого запроса после добавления контекста запроса, до сопоставления URL.
Должен вернуть объект, реализующий интерфейс словаря, а также интерфейс
SessionMixin.Возвращает
Noneдля обозначения того, что загрузка не удалась по причине, которая не является непосредственной ошибкой. В этом случае контекст запроса вернётся к использованиюmake_null_session().- Parameters:
- Return type:
-
SecureCookieSession | None
-
save_session(app, session, response) -
Вызывается в конце каждого запроса после генерации ответа, до удаления контекста запроса. Пропускается, если
is_null_session()возвращаетTrue.- Parameters:
-
- app (Flask)
- session (SessionMixin)
- response (Response)
- Return type:
-
None
-
-
class flask.sessions.SecureCookieSession(initial=None) -
Базовый класс для сессий, основанных на подписанных куках.
Этот бэкэнд сессий будет устанавливать атрибуты
modifiedиaccessed. Он не может надежно отслеживать, является ли сессия новой (по сравнению с пустой), поэтомуnewостается жестко закодированным вFalse.-
modified = False -
Когда данные изменяются, это устанавливается в
True. Отслеживается только сам словарь сессии; если сессия содержит изменяемые данные (например, вложенный словарь), то это должно быть установлено вTrueвручную при изменении этих данных. Куки сессии будет записан в ответ только в том случае, если этоTrue.
-
accessed = False -
заголовок, который позволяет кэширующим прокси кэшировать разные страницы для разных пользователей.
-
get(key, default=None) -
Возвращает значение для ключа, если ключ есть в словаре, иначе значение по умолчанию.
-
-
class flask.sessions.NullSession(initial=None) -
Класс, используемый для генерации более понятных сообщений об ошибках, если сессии недоступны. Позволит доступ только для чтения к пустой сессии, но завершится с ошибкой при попытке записи.
-
clear() → None. Remove all items from D.
-
pop(k[, d]) → v, remove specified key and return the corresponding value. -
Если ключ не найден, возвращает значение по умолчанию, если оно задано; в противном случае, вызывает KeyError.
-
popitem(*args, **kwargs) -
Удаляет и возвращает пару (ключ, значение) в виде 2-кортежа.
Пары возвращаются в порядке LIFO (последний вошел, первый вышел). Вызывает KeyError, если словарь пуст.
-
update([E, ]**F) → None. Update D from dict/iterable E and F. -
Если E присутствует и имеет метод .keys(), то выполняет: for k in E: D[k] = E[k] Если E присутствует и не имеет метода .keys(), то выполняет: for k, v in E: D[k] = v В любом случае, за этим следует: for k in F: D[k] = F[k]
-
-
class flask.sessions.SessionMixin -
Расширяет базовый словарь атрибутами сессии.
-
property permanent: bool -
Это отражает ключ
'_permanent'в словаре.
-
modified = True -
Некоторые реализации могут обнаруживать изменения в сессии и устанавливать это значение, когда это происходит. Значение по умолчанию для mixin жестко закодировано как
True.
-
accessed = True -
Некоторые реализации могут обнаруживать, когда данные сессии читаются или записываются, и устанавливать это значение, когда это происходит. Значение по умолчанию для mixin жестко закодировано как
True.
-
Замечание
Настройка PERMANENT_SESSION_LIFETIME может быть целым числом или timedelta. Атрибут permanent_session_lifetime всегда является timedelta.
Тестовый клиент
-
class flask.testing.FlaskClient(*args, **kwargs) -
Работает как обычный тестовый клиент Werkzeug, но имеет знания о контекстах Flask, чтобы отложить очистку контекста запроса до конца блока
with. Для общей информации о том, как использовать этот класс, обратитесь кwerkzeug.test.Client.Журнал изменений
Изменено в версии 0.12:
app.test_client()включает предварительно заданную среду по умолчанию, которую можно установить после создания объектаapp.test_client()вclient.environ_base.Основное использование описано в главе Тестирование приложений Flask.
- Параметры:
-
- args (t.Any)
- kwargs (t.Any)
-
session_transaction(*args, **kwargs) -
При использовании в сочетании с
withблоком открывает транзакцию сеанса. Это можно использовать для изменения сеанса, который использует тестовый клиент. После выхода из блокаwithсеанс сохраняется обратно.with client.session_transaction() as session: session['value'] = 42Внутренне это реализовано с помощью временного контекста тестового запроса, и поскольку обработка сеансов может зависеть от переменных запроса, эта функция принимает те же аргументы, что и
test_request_context(), которые передаются напрямую.- Параметры:
- Тип возвращаемого значения:
-
open(*args, buffered=False, follow_redirects=False, **kwargs) -
Создаёт словарь environ из заданных аргументов, выполняет запрос к приложению с использованием его и возвращает ответ.
- Параметры:
-
-
args (t.Any) – Передаётся в
EnvironBuilderдля создания environ для запроса. Если передаётся единственный аргумент, он может быть существующимEnvironBuilderили словарем environ. -
buffered (bool) – Преобразует итератор, возвращённый приложением, в список. Если у итератора есть метод
close(), он вызывается автоматически. -
follow_redirects (bool) – Выполняет дополнительные запросы для следования HTTP-редиректам до тех пор, пока не будет возвращён статус, не являющийся редиректом.
TestResponse.historyотображает промежуточные ответы. - kwargs (t.Any)
-
args (t.Any) – Передаётся в
- Тип возвращаемого значения:
-
TestResponse
Журнал изменений
Изменено в версии 2.1: Удален параметр
as_tuple.Изменено в версии 2.0: Поток входных данных запроса закрывается при вызове
response.close(). Потоки входных данных для редиректов автоматически закрываются.Изменено в версии 0.5: Если в словаре для параметра
dataпредоставляется словарь как файл, тип контента должен бытьcontent_typeвместоmimetype. Это изменение было сделано для согласованности сwerkzeug.FileWrapper.Изменено в версии 0.5: Добавлен параметр
follow_redirects.
Запуск тестовых команд из командной строки
-
class flask.testing.FlaskCliRunner(app, **kwargs) -
CliRunnerдля тестирования команд CLI приложения Flask. Обычно создаётся с помощьюtest_cli_runner(). См. Запуск команд с помощью CLI-запускателя.- Параметры:
-
- app (Flask)
- kwargs (t.Any)
-
invoke(cli=None, args=None, **kwargs) -
Вызывает команду CLI в изолированной среде. См.
CliRunner.invokeдля полной документации метода. См. Запуск команд с помощью CLI-запускателя для примеров.Если аргумент
objне указан, передаётся экземплярScriptInfo, который знает, как загрузить приложение Flask, которое тестируется.
Глобальные переменные приложения
Для совместного использования данных, применимых только к одному запросу одной функцией с другой, глобальной переменной недостаточно, так как она будет нарушаться в многопоточных средах. Flask предоставляет вам специальный объект, который гарантирует, что он действителен только для активного запроса и будет возвращать разные значения для каждого запроса. Короче говоря: он делает всё правильно, как и для request и session.
-
flask.g -
Объект пространства имен, который может хранить данные во время контекста приложения. Это экземпляр
Flask.app_ctx_globals_class, который по умолчанию равенctx._AppCtxGlobals.Это хорошее место для хранения ресурсов во время запроса. Например, функция
before_requestможет загрузить объект пользователя из идентификатора сеанса, а затем установитьg.userдля использования в функции представления.Это прокси. Более подробная информация представлена в разделе Заметки о прокси.
Журнал изменений
Изменено в версии 0.10: Привязан к контексту приложения вместо контекста запроса.
-
class flask.ctx._AppCtxGlobals -
Простой объект. Используется в качестве пространства имен для хранения данных во время контекста приложения.
Создание контекста приложения автоматически создаёт этот объект, который доступен как прокси
g.- 'key' in g
-
Проверка наличия атрибута.
Журнал изменений
Добавлен в версии 0.10.
- iter(g)
-
Возвращает итератор по именам атрибутов.
Журнал изменений
Добавлен в версии 0.10.
-
get(name, default=None) -
Получение атрибута по имени или значения по умолчанию. Аналогично
dict.get().- Параметры:
- Тип возвращаемого значения:
Журнал изменений
Добавлен в версии 0.10.
-
pop(name, default=_sentinel) -
Получение и удаление атрибута по имени. Аналогично
dict.pop().- Параметры:
- Тип возвращаемого значения:
Журнал изменений
Добавлен в версии 0.11.
-
setdefault(name, default=None) -
Получение значения атрибута, если оно присутствует, в противном случае устанавливает и возвращает значение по умолчанию. Аналогично
dict.setdefault().- Параметры:
- Тип возвращаемого значения:
Журнал изменений
Добавлен в версии 0.11.
Полезные функции и классы
-
flask.current_app -
Провайдер приложения, обрабатывающего текущий запрос. Это полезно для доступа к приложению без необходимости импортировать его, или если его нельзя импортировать, например, при использовании паттерна фабрики приложения или в шаблонах и расширениях.
Доступен только при установленном контексте приложения. Это происходит автоматически во время запросов и команд из командной строки. Его можно контролировать вручную с помощью
app_context().Это прокси. Смотрите Примечания по прокси для получения дополнительной информации.
-
flask.has_request_context() -
Если вам нужно проверить наличие контекста запроса, можно использовать эту функцию. Например, вы можете воспользоваться информацией о запросе, если объект запроса доступен, но при этом безмолвно проигнорировать его отсутствие.
class User(db.Model): def __init__(self, username, remote_addr=None): self.username = username if remote_addr is None and has_request_context(): remote_addr = request.remote_addr self.remote_addr = remote_addrВ качестве альтернативы, можно также просто проверить на истинность любой из связанных с контекстом объектов (например,
requestилиg):class User(db.Model): def __init__(self, username, remote_addr=None): self.username = username if remote_addr is None and request: remote_addr = request.remote_addr self.remote_addr = remote_addrИзменения
Добавлена в версии 0.7.
- Тип возвращаемого значения:
-
flask.copy_current_request_context(f) -
Вспомогательная функция, которая декорирует функцию для сохранения текущего контекста запроса. Это полезно при работе с greenlets. В момент декорирования функции создается копия контекста запроса, а затем она устанавливается при вызове функции. Текущая сессия также включается в скопированный контекст запроса.
Пример:
import gevent from flask import copy_current_request_context @app.route('/') def index(): @copy_current_request_context def do_some_work(): # do some work here, it can access flask.request or # flask.session like you would otherwise in the view function. ... gevent.spawn(do_some_work) return 'Regular response'Изменения
Добавлена в версии 0.10.
- Параметры:
-
f (F)
- Тип возвращаемого значения:
-
F
-
flask.has_app_context() -
Работает так же, как
has_request_context(), но для контекста приложения. Также можно просто проверить истинность объектаcurrent_app.Изменения
Добавлена в версии 0.9.
- Тип возвращаемого значения:
-
flask.url_for(endpoint, *, _anchor=None, _method=None, _scheme=None, _external=None, **values) -
Генерирует URL для заданного конечной точки с заданными значениями.
Требует активного запроса или контекста приложения и вызывает
current_app.url_for(). Подробная документация представлена в этом методе.- Параметры:
-
-
endpoint (str) – Имя конечной точки, связанное с URL для генерации. Если начинается с
., используется текущее имя шаблона (при наличии). -
_anchor (str | None) – Если задано, добавляет это как
#anchorк URL. - _method (str | None) – Если задано, генерирует URL, связанный с этим методом для конечной точки.
- _scheme (str | None) – Если задано, URL будет иметь этот протокол, если он внешний.
- _external (bool | None) – Если задано, предпочтение отдается внутреннему URL (False) или требуется внешний URL (True). Внешние URL включают схему и домен. Когда не в активном запросе, URL по умолчанию внешние.
-
values (Any) – Значения, используемые для переменных частей правила URL. Неизвестные ключи добавляются как аргументы запроса, например,
?a=b&c=d.
-
endpoint (str) – Имя конечной точки, связанное с URL для генерации. Если начинается с
- Тип возвращаемого значения:
Изменения
Изменено в версии 2.2: Вызывает
current_app.url_for, позволяя приложению переопределить поведение.Изменено в версии 0.10: Добавлен параметр
_scheme.Изменено в версии 0.9: Добавлены параметры
_anchorи_method.Изменено в версии 0.9: Вызывает
app.handle_url_build_errorпри ошибках построения.
-
flask.abort(code, *args, **kwargs) -
Вызывает исключение
HTTPExceptionдля заданного кода состояния.Если
current_appдоступен, он вызовет свой объектaborter, в противном случае будет использоватьwerkzeug.exceptions.abort().- Параметры:
- Тип возвращаемого значения:
Изменения
Добавлена в версии 2.2: Вызывает
current_app.aborterпри наличии вместо всегда использования по умолчанию Werkzeugabort.
-
flask.redirect(location, code=302, Response=None) -
Создать объект ответа перенаправления.
Если
current_appдоступен, он будет использовать свой методredirect(), в противном случае будет использованwerkzeug.utils.redirect().- Параметры:
- Тип возвращаемого значения:
Журнал изменений
Добавлен в версии 2.2: Вызывает
current_app.redirect, если доступно, вместо всегда использования по умолчанию Werkzeugredirect.
-
flask.make_response(*args) -
Иногда необходимо задать дополнительные заголовки в представлении. Поскольку представления не обязаны возвращать объекты ответа, но могут возвращать значение, преобразуемое в объект ответа Flask, становится сложно добавлять к нему заголовки. Эта функция может быть вызвана вместо возврата, и вы получите объект ответа, который можно использовать для добавления заголовков.
Если представление выглядит так, и вам нужно добавить новый заголовок:
def index(): return render_template('index.html', foo=42)Теперь вы можете сделать что-то вроде этого:
def index(): response = make_response(render_template('index.html', foo=42)) response.headers['X-Parachutes'] = 'parachutes are cool' return responseЭта функция принимает те же самые аргументы, которые можно вернуть из функции представления. Например, это создаёт ответ с кодом ошибки 404:
response = make_response(render_template('not_found.html'), 404)Другой случай использования этой функции — принудительное преобразование значения возвращаемого функцией представления в ответ, что полезно при использовании декораторов представлений:
response = make_response(view_function()) response.headers['X-Parachutes'] = 'parachutes are cool'
Внутренне эта функция выполняет следующие действия:
- если аргументы не переданы, создается новый аргумент ответа
- если передан один аргумент, вызывается
flask.Flask.make_response()с ним. - если передано более одного аргумента, аргументы передаются в функцию
flask.Flask.make_response()в виде кортежа.
Журнал изменений
Добавлен в версии 0.6.
- Параметры:
-
args (t.Any)
- Тип возвращаемого значения:
-
flask.after_this_request(f) -
Выполняет функцию после этого запроса. Это полезно для изменения объектов ответа. Функции передаётся объект ответа, и она должна возвратить тот же самый или новый.
Пример:
@app.route('/') def index(): @after_this_request def add_header(response): response.headers['X-Foo'] = 'Parachute' return response return 'Hello World!'Это более полезно, если функцию, отличную от функции представления, нужно изменить ответ. Например, подумайте о декораторе, который хочет добавить некоторые заголовки без преобразования возвращаемого значения в объект ответа.
Журнал изменений
Добавлен в версии 0.9.
-
flask.send_file(path_or_file, mimetype=None, as_attachment=False, download_name=None, conditional=True, etag=True, last_modified=None, max_age=None) -
Отправьте содержимое файла клиенту.
Первый аргумент может быть путем к файлу или объектом типа «файл». В большинстве случаев предпочтительнее пути, поскольку Werkzeug может управлять файлом и получать дополнительную информацию из пути. Передача объекта типа «файл» требует, чтобы файл был открыт в двоичном режиме, и это в основном полезно при построении файла в памяти с помощью
io.BytesIO.Никогда не передавайте пути к файлам, предоставленные пользователем. Предполагается, что путь является доверенным, поэтому пользователь может создать путь для доступа к файлу, который вы не имели в виду. Используйте
send_from_directory()для безопасной обработки запрошенных пользователем путей из каталога.Если WSGI-сервер устанавливает
file_wrapperвenviron, он используется, в противном случае используется встроенный обёртку Werkzeug. В качестве альтернативы, если HTTP-сервер поддерживаетX-Sendfile, настройка Flask сUSE_X_SENDFILE = Trueсообщит серверу отправить указанный путь, что намного эффективнее, чем его чтение в Python.- Параметры:
-
- path_or_file (os.PathLike[t.AnyStr] | str | t.BinaryIO) – Путь к файлу для отправки, относительно текущей рабочей директории, если указан относительный путь. В качестве альтернативы, объект типа «файл», открытый в двоичном режиме. Убедитесь, что указатель файла установлен в начало данных.
- mimetype (str | None) – Тип MIME для отправки файла. Если не указан, он будет пытаться определить его по имени файла.
- as_attachment (bool) – Указывает браузеру, что ему следует предложить сохранить файл, а не отображать его.
- download_name (str | None) – Имя по умолчанию, которое браузеры будут использовать при сохранении файла. По умолчанию совпадает с именем переданного файла.
-
conditional (bool) – Включить условные и диапазонные ответы на основе заголовков запроса. Требует передачи пути к файлу и
environ. - etag (bool | str) – Вычислить ETag для файла, что требует передачи пути к файлу. Также может быть строкой для использования вместо этого.
- last_modified (datetime | int | float | None) – Время последнего изменения для отправки файла в секундах. Если не указано, будет попытка определить его по пути к файлу.
-
max_age (None | (int | t.Callable[[str | None], int | None])) – Время, в секундах, в течение которого клиент должен кешировать файл. Если установлено,
Cache-Controlбудетpublic, в противном случае оно будетno-cacheдля использования условного кэширования.
- Тип возвращаемого значения:
Изменения
Изменено в версии 2.0:
download_nameзаменяет параметрattachment_filename. Еслиas_attachment=False, он передаётся сContent-Disposition: inline.Изменено в версии 2.0:
max_ageзаменяет параметрcache_timeout.conditionalвключен, аmax_ageпо умолчанию не задан.Изменено в версии 2.0:
etagзаменяет параметрadd_etags. Он может быть строкой, вместо вычисления.Изменено в версии 2.0: Передача объекта типа «файл», который наследуется от
TextIOBase, вызоветValueError, а не отправит пустой файл.Добавлена в версии 2.0: Реализация перенесена в Werkzeug. Теперь это обёртка для передачи некоторых специфичных для Flask аргументов.
Изменено в версии 1.1:
filenameможет быть объектомPathLike.Изменено в версии 1.1: Передача объекта
BytesIOподдерживает запросы с указанием диапазона.Изменено в версии 1.0.3: Имена файлов кодируются с помощью ASCII вместо Latin-1 для большей совместимости с WSGI-серверами.
Изменено в версии 1.0: Поддерживаются имена файлов UTF-8, как указано в RFC 2231.
Изменено в версии 0.12: Имя файла больше не выводится автоматически из объектов файлов. Если вы хотите использовать автоматическую поддержку MIME и etag, передайте имя файла через
filename_or_fpилиattachment_filename.Изменено в версии 0.12:
attachment_filenameпредпочтительнееfilenameдля обнаружения MIME.Изменено в версии 0.9:
cache_timeoutпо умолчанию равенFlask.get_send_file_max_age().Изменено в версии 0.7: Угадавание MIME и поддержка etag для объектов типа «файл» были удалены из-за ненадежности. Передайте имя файла, если это возможно, иначе установите etag самостоятельно.
Изменено в версии 0.5: Были добавлены параметры
add_etags,cache_timeoutиconditional. По умолчанию добавляются etag.Добавлена в версии 0.2.
-
flask.send_from_directory(directory, path, **kwargs) -
Отправьте файл из каталога с помощью
send_file().@app.route("/uploads/<path:name>") def download_file(name): return send_from_directory( app.config['UPLOAD_FOLDER'], name, as_attachment=True )Это безопасный способ предоставления файлов из папки, такой как статические файлы или загруженные файлы. Использует
safe_join(), чтобы убедиться, что путь, полученный от клиента, не был злонамеренно составлен для указания на область за пределами указанного каталога.Если конечный путь не указывает на существующий обычный файл, возникает ошибка 404
NotFound.- Параметры:
-
-
directory (os.PathLike[str] | str) – Каталог, в котором
pathдолжен находиться, относительно корневого пути текущего приложения. Это не должно быть значение, предоставленное клиентом, в противном случае это становится небезопасным. -
path (os.PathLike[str] | str) – Путь к файлу для отправки, относительно
directory. -
kwargs (t.Any) – Аргументы для передачи в
send_file().
-
directory (os.PathLike[str] | str) – Каталог, в котором
- Тип возвращаемого значения:
Изменения
Изменено в версии 2.0:
pathзаменяет параметрfilename.Добавлена в версии 2.0: Реализация перенесена в Werkzeug. Теперь это обёртка для передачи некоторых флагов Flask.
Добавлена в версии 0.5.
Сообщения-всплывающие окна
-
flask.flash(message, category='message') -
Выводит сообщение для следующего запроса. Для удаления сообщения из сессии и отображения его пользователю, шаблон должен вызвать
get_flashed_messages().Изменения
Изменено в версии 0.3: Добавлен параметр
category.- Параметры:
-
- message (str) – сообщение для вывода.
-
category (str) – категория для сообщения. Рекомендуются следующие значения:
'message'для любого типа сообщения,'error'для ошибок,'info'для информационных сообщений и'warning'для предупреждений. Однако можно использовать любой тип строки в качестве категории.
- Тип возвращаемого значения:
-
None
-
flask.get_flashed_messages(with_categories=False, category_filter=()) -
Извлекает все сообщения из всплывающих окон из сессии и возвращает их. Дальнейшие вызовы функции в одном запросе вернут те же сообщения. По умолчанию возвращаются только сообщения, но когда
with_categoriesустанавливается вTrue, возвращаемое значение будет списком кортежей в формате(category, message).Фильтрация сообщений по одной или нескольким категориям осуществляется путем указания этих категорий в
category_filter. Это позволяет отображать категории в отдельных блоках html. Параметрыwith_categoriesиcategory_filterотличаются:-
with_categoriesопределяет, будут ли возвращаться категории вместе с текстом сообщения (Trueвозвращает кортеж,Falseвозвращает только текст сообщения). -
category_filterфильтрует сообщения, оставляя только те, которые соответствуют указанным категориям.
См. Сообщения-всплывающие окна для примеров.
Изменения
Изменено в версии 0.9: Добавлен параметр
category_filter.Изменено в версии 0.3: Добавлен параметр
with_categories. -
Поддержка JSON
Flask использует встроенный модуль Python json для обработки JSON по умолчанию. Реализацию JSON можно изменить, назначив другой поставщик классу flask.Flask.json_provider_class или flask.Flask.json. Функции, предоставляемые flask.json, будут использовать методы app.json, если контекст приложения активен.
Фильтр Jinja |tojson настроен на использование поставщика JSON приложения. Фильтр помечает вывод |safe. Используйте его для отображения данных внутри HTML-тегов <script>.
<script>
const names = {{ names|tojson }};
renderChart(names, {{ axis_data|tojson }});
</script>
-
flask.json.jsonify(*args, **kwargs) -
Сериализует заданные аргументы в формате JSON и возвращает объект
Responseс типом MIMEapplication/json. Словарь или список, возвращаемые из представления, будут автоматически преобразованы в ответ JSON без необходимости вызова этой функции.Требуется активный контекст запроса или приложения и вызов
app.json.response().В режиме отладки вывод форматируется с отступами для лучшей читаемости. Это также может контролироваться поставщиком.
Можно использовать позиционные или ключевые аргументы, но не оба одновременно. Если аргументов нет, будет сериализован
None.- Параметры:
-
- args (t.Any) – Единственное значение для сериализации или несколько значений, которые будут обработаны как список для сериализации.
- kwargs (t.Any) – Обработать как словарь для сериализации.
- Тип возвращаемого значения:
Журнал изменений
Изменено в версии 2.2: Вызывается
current_app.json.response, что позволяет приложению переопределить поведение.Изменено в версии 2.0.2: Поддерживается
decimal.Decimalпутём преобразования в строку.Изменено в версии 0.11: Добавлена поддержка сериализации массивов верхнего уровня. Это представляло собой риск безопасности в старых браузерах. См. Безопасность JSON.
Добавлена в версии 0.2.
-
flask.json.dumps(obj, **kwargs) -
Сериализует данные в формате JSON.
Если
current_appдоступен, он будет использовать его методapp.json.dumps(), в противном случае будет использоватьсяjson.dumps().- Параметры:
- Тип возвращаемого значения:
Журнал изменений
Изменено в версии 2.3: Параметр
appбыл удалён.Изменено в версии 2.2: Вызывается
current_app.json.dumps, что позволяет приложению переопределить поведение.Изменено в версии 2.0.2: Поддерживается
decimal.Decimalпутём преобразования в строку.Изменено в версии 2.0:
encodingбудет удалён в Flask 2.1.Изменено в версии 1.0.3:
appможет быть передан непосредственно, вместо требования контекста приложения для настройки.
-
flask.json.dump(obj, fp, **kwargs) -
Сериализует данные в формате JSON и записывает их в файл.
Если
current_appдоступен, он будет использовать его методapp.json.dump(), в противном случае будет использоватьсяjson.dump().- Параметры:
- Тип возвращаемого значения:
-
None
Журнал изменений
Изменено в версии 2.3: Параметр
appбыл удалён.Изменено в версии 2.2: Вызывается
current_app.json.dump, что позволяет приложению переопределить поведение.Изменено в версии 2.0: Запись в двоичный файл и аргумент
encodingбудут удалены в Flask 2.1.
-
flask.json.loads(s, **kwargs) -
Десериализует данные из JSON.
Если
current_appдоступен, он будет использовать его методapp.json.loads(), в противном случае будет использоватьсяjson.loads().- Параметры:
- Тип возвращаемого значения:
Журнал изменений
Изменено в версии 2.3: Параметр
appбыл удалён.Изменено в версии 2.2: Вызывается
current_app.json.loads, что позволяет приложению переопределить поведение.Изменено в версии 2.0:
encodingбудет удалён в Flask 2.1. Данные должны быть строкой или байтами UTF-8.Изменено в версии 1.0.3:
appможет быть передан непосредственно, вместо требования контекста приложения для настройки.
-
flask.json.load(fp, **kwargs) -
Десериализовать данные в формате JSON, прочитанные из файла.
Если доступен
current_app, он будет использовать методapp.json.load(), в противном случае будет использоватьсяjson.load().- Parameters:
- Return type:
Changelog
Изменено в версии 2.3: Параметр
appбыл удален.Изменено в версии 2.2: Вызовы
current_app.json.load, позволяющие приложению переопределить поведение.Изменено в версии 2.2: Параметр
appбудет удален в Flask 2.3.Изменено в версии 2.0:
encodingбудет удален в Flask 2.1. Файл должен быть в текстовом режиме или в бинарном режиме с UTF-8 байтами.
-
class flask.json.provider.JSONProvider(app) -
Стандартный набор операций с JSON для приложения. Подклассы этого класса могут использоваться для настройки поведения JSON или использования разных библиотек JSON.
Для реализации провайдера для конкретной библиотеки, подклассируйте этот базовый класс и реализуйте по крайней мере
dumps()иloads(). Все остальные методы имеют реализации по умолчанию.Чтобы использовать другой провайдер, подклассифицируйте
Flaskи установитеjson_provider_classна класс провайдера или установитеapp.jsonна экземпляр класса.- Parameters:
-
app (App) – Экземпляр приложения. Он будет храниться как
weakref.proxyна атрибуте_app.
Changelog
Добавлен в версии 2.2.
-
dumps(obj, **kwargs) -
Сериализовать данные в формате JSON.
-
dump(obj, fp, **kwargs) -
Сериализовать данные в формате JSON и записать в файл.
-
loads(s, **kwargs) -
Десериализовать данные из JSON.
-
load(fp, **kwargs) -
Десериализовать данные из файла в формате JSON.
-
response(*args, **kwargs) -
Сериализовать указанные аргументы в формате JSON и вернуть объект
Responseс MIME-типомapplication/json.Функция
jsonify()вызывает этот метод для текущего приложения.Можно использовать позиционные или именованные аргументы, но не оба одновременно. Если аргументы не указаны, сериализуется
None.- Parameters:
-
- args (t.Any) – Одно значение для сериализации или несколько значений, которые будут обработаны как список для сериализации.
- kwargs (t.Any) – Обработать как словарь для сериализации.
- Return type:
-
class flask.json.provider.DefaultJSONProvider(app) -
Предоставляет операции с JSON, используя встроенную библиотеку Python
json. Сериализует следующие дополнительные типы данных:-
datetime.datetimeиdatetime.dateсериализуются в строки RFC 822. Это соответствует формату HTTP-даты. -
uuid.UUIDсериализуется в строку. -
dataclasses.dataclassпередаётся вdataclasses.asdict(). -
Markup(или любой объект с методом__html__) вызовет метод__html__для получения строки.
- Параметры:
-
app (App)
-
static default(o) -
Применяет эту функцию к любому объекту, который
json.dumps()не знает, как сериализовать. Она должна вернуть допустимый тип JSON или вызватьTypeError.
-
ensure_ascii = True -
Заменяет символы, не входящие в ASCII, на последовательности экранирования. Это может быть более совместимо с некоторыми клиентами, но может быть отключено для лучшей производительности и размера.
-
sort_keys = True -
Сортирует ключи в любых сериализованных словарях. Это может быть полезно в некоторых ситуациях кэширования, но может быть отключено для лучшей производительности. При включении ключи должны быть строками; они не преобразуются перед сортировкой.
-
compact: bool | None = None -
Если
True, илиNoneвне режима отладки, выводresponse()не будет добавлять отступы, новые строки или пробелы. ЕслиFalse, илиNoneв режиме отладки, он будет использовать некомпактное представление.
-
mimetype = 'application/json' -
Тип MIME, установленный в
response().
-
dumps(obj, **kwargs) -
Сериализует данные в JSON в строку.
Ключевые аргументы передаются в
json.dumps(). Устанавливает некоторые значения параметров по умолчанию из атрибутовdefault,ensure_asciiиsort_keys.- Параметры:
-
- obj (Any) – Данные для сериализации.
-
kwargs (Any) – Передаётся в
json.dumps().
- Тип возвращаемого значения:
-
loads(s, **kwargs) -
Десериализует данные в JSON из строки или байтов.
- Параметры:
-
- s (str | bytes) – Текст или байты UTF-8.
-
kwargs (Any) – Передаётся в
json.loads().
- Тип возвращаемого значения:
-
response(*args, **kwargs) -
Сериализует заданные аргументы в JSON и возвращает объект
Responseс ним. Тип MIME ответа будет «application/json» и может быть изменён с помощьюmimetype.Если
compact—False, или режим отладки включён, вывод будет отформатирован для лучшей читаемости.Можно использовать позиционные или ключевые аргументы, но не оба одновременно. Если аргументы не указаны, сериализуется
None.- Параметры:
-
- args (t.Any) – Одно значение для сериализации или несколько значений для обработки как списка для сериализации.
- kwargs (t.Any) – Обработать как словарь для сериализации.
- Тип возвращаемого значения:
-
Отмеченный JSON
Компактное представление для без потерь сериализации типов JSON, нестандартных для JSON. SecureCookieSessionInterface использует это для сериализации данных сессии, но это может быть полезно и в других местах. Его можно расширить, чтобы поддерживать другие типы.
-
class flask.json.tag.TaggedJSONSerializer -
Сериализатор, который использует систему меток для компактного представления объектов, которые не являются типами JSON. Передается как промежуточный сериализатор в
itsdangerous.Serializer.Поддерживаются следующие дополнительные типы:
-
default_tags = [<class 'flask.json.tag.TagDict'>, <class 'flask.json.tag.PassDict'>, <class 'flask.json.tag.TagTuple'>, <class 'flask.json.tag.PassList'>, <class 'flask.json.tag.TagBytes'>, <class 'flask.json.tag.TagMarkup'>, <class 'flask.json.tag.TagUUID'>, <class 'flask.json.tag.TagDateTime'>] -
Классы меток для привязки при создании сериализатора. Другие метки можно добавить позже, используя
register().
-
register(tag_class, force=False, index=None) -
Регистрирует новую метку с этим сериализатором.
- Параметры:
-
- tag_class (type[JSONTag]) – класс метки для регистрации. Будет создан экземпляр с этим экземпляром сериализатора.
-
force (bool) – перезаписать существующую метку. Если false (по умолчанию), возникает
KeyError. -
index (int | None) – индекс для вставки новой метки в порядке меток. Полезно, когда новая метка является частным случаем существующей метки. Если
None(по умолчанию), метка добавляется в конец порядка.
- Исключения:
-
KeyError – если ключ метки уже зарегистрирован и
forceне true. - Возвращаемое значение:
-
None
-
tag(value) -
Преобразовать значение в помеченное представление, если необходимо.
-
untag(value) -
Преобразовать помеченное представление обратно в исходный тип.
-
dumps(value) -
Помечает значение и выводит его в компактную строку JSON.
-
loads(value) -
Загружает данные из строки JSON и десериализует любые помеченные объекты.
-
class flask.json.tag.JSONTag(serializer) -
Базовый класс для определения меток типов для
TaggedJSONSerializer.- Параметры:
-
serializer (TaggedJSONSerializer)
-
key: str = '' -
Метка, которой помечается сериализованный объект. Если пустая, эта метка используется только как промежуточный шаг при помечании.
-
check(value) -
Проверяет, должно ли данное значение быть помечено этой меткой.
-
to_json(value) -
Преобразовать объект Python в объект, являющийся допустимым типом JSON. Метка будет добавлена позже.
-
to_python(value) -
Преобразовать представление JSON обратно в правильный тип. Метка уже будет удалена.
-
Посмотрим пример, который добавляет поддержку OrderedDict. Словари не имеют порядка в JSON, поэтому для обработки этого мы будем выгружать элементы как список пар [key, value]. Подклассируйте JSONTag и присвойте ему новый ключ ' od' для идентификации типа. Сериализатор сессии обрабатывает словари в первую очередь, поэтому вставьте новый тег в начало порядка, так как OrderedDict должен быть обработан до dict.
from flask.json.tag import JSONTag
class TagOrderedDict(JSONTag):
__slots__ = ('serializer',)
key = ' od'
def check(self, value):
return isinstance(value, OrderedDict)
def to_json(self, value):
return [[k, self.serializer.tag(v)] for k, v in iteritems(value)]
def to_python(self, value):
return OrderedDict(value)
app.session_interface.serializer.register(TagOrderedDict, index=0)
Представление шаблонов
-
flask.render_template(template_name_or_list, **context) -
Отобразить шаблон по имени с заданным контекстом.
-
flask.render_template_string(source, **context) -
Отобразить шаблон из заданной строки исходного кода с заданным контекстом.
-
flask.stream_template(template_name_or_list, **context) -
Отобразить шаблон по имени с заданным контекстом как поток. Это возвращает итератор строк, который может быть использован как ответ потока из представления.
- Параметры:
- Тип возвращаемого значения:
Изменения
Добавлен в версии 2.2.
-
flask.stream_template_string(source, **context) -
Отобразить шаблон из заданной строки исходного кода с заданным контекстом как поток. Это возвращает итератор строк, который может быть использован как ответ потока из представления.
- Параметры:
- Тип возвращаемого значения:
Изменения
Добавлен в версии 2.2.
-
flask.get_template_attribute(template_name, attribute) -
Загружает макрос (или переменную), экспортируемый шаблоном. Это можно использовать для вызова макроса из кода Python. Если у вас, например, есть шаблон под именем
_cider.htmlсо следующим содержимым:{% macro hello(name) %}Hello {{ name }}!{% endmacro %}Вы можете получить к нему доступ из кода Python так:
hello = get_template_attribute('_cider.html', 'hello') return hello('World')Изменения
Добавлен в версии 0.2.
Настройка
-
class flask.Config(root_path, defaults=None) -
Работает точно так же, как словарь, но предоставляет способы заполнения его из файлов или специальных словарей. Существуют два распространенных шаблона для заполнения конфигурации.
Вы можете заполнить конфигурацию из файла конфигурации:
app.config.from_pyfile('yourconfig.cfg')Или, как альтернатива, вы можете определить параметры конфигурации в модуле, который вызывает
from_object(), или предоставить путь импорта к модулю, который должен быть загружен. Также можно указать использование того же модуля и предоставить значения конфигурации непосредственно перед вызовом:DEBUG = True SECRET_KEY = 'development key' app.config.from_object(__name__)
В обоих случаях (загрузка из любого файла Python или загрузка из модулей) в конфигурацию добавляются только ключи с заглавными буквами. Это позволяет использовать значения с маленькими буквами в файле конфигурации для временных значений, которые не добавляются в конфигурацию, или для определения ключей конфигурации в том же файле, который реализует приложение.
Возможно, наиболее интересным способом загрузки конфигураций является использование переменной окружения, указывающей на файл:
app.config.from_envvar('YOURAPPLICATION_SETTINGS')В этом случае перед запуском приложения вам необходимо установить эту переменную окружения на файл, который вы хотите использовать. В Linux и OS X используйте оператор export:
export YOURAPPLICATION_SETTINGS='/path/to/config/file'
В Windows используйте
setвместо этого.- Параметры:
-
from_envvar(variable_name, silent=False) -
Загружает конфигурацию из переменной окружения, указывающей на файл конфигурации. Это просто сокращение с более понятными сообщениями об ошибках для этой строки кода:
app.config.from_pyfile(os.environ['YOURAPPLICATION_SETTINGS'])
-
from_prefixed_env(prefix='FLASK', *, loads=json.loads) -
Загружает все переменные окружения, начинающиеся с
FLASK_, удаляя префикс из ключа env для ключа конфигурации. Значения передаются в функцию загрузки для попытки преобразования их в типы, более специфические, чем строки.Ключи загружаются в
sorted()порядке.Функция загрузки по умолчанию пытается разобрать значения как любой допустимый тип JSON, включая словари и списки.
Конкретные элементы вложенных словарей можно задать, разделив ключи двойными подчеркиваниями (
__). Если промежуточный ключ не существует, он будет инициализирован пустым словарем.- Параметры:
-
-
prefix (str) – Загрузить переменные окружения, начинающиеся с этого префикса, разделенные подчеркиванием (
_). -
loads (Callable[[str], Any]) – Передать каждое строковое значение в эту функцию и использовать возвращаемое значение в качестве значения конфигурации. Если возникает ошибка, она игнорируется, и значение остается строкой. По умолчанию это
json.loads().
-
prefix (str) – Загрузить переменные окружения, начинающиеся с этого префикса, разделенные подчеркиванием (
- Тип возвращаемого значения:
Изменения
Добавлен в версии 2.1.
-
from_pyfile(filename, silent=False) -
Обновляет значения в конфигурации из файла Python. Эта функция ведет себя так, как будто файл был импортирован как модуль с помощью функции
from_object().- Параметры:
- Возвращает:
-
Trueесли файл был загружен успешно. - Тип возвращаемого значения:
Изменения
Добавлен в версии 0.7:
silentпараметр.
-
from_object(obj) -
Обновляет значения из заданного объекта. Объект может быть одного из следующих двух типов:
- строка: в этом случае импортируется объект с этим именем
- ссылка на фактический объект: используется непосредственно этот объект
Объекты обычно являются либо модулями, либо классами.
from_object()загружает только атрибуты с заглавными буквами модуля/класса. Объектdictне будет работать сfrom_object(), потому что ключиdictне являются атрибутами классаdict.Пример конфигурации на основе модуля:
app.config.from_object('yourapplication.default_config') from yourapplication import default_config app.config.from_object(default_config)Над объектом перед загрузкой ничего не выполняется. Если объект является классом и имеет
@propertyатрибуты, его необходимо инициализировать перед передачей в этот метод.Не следует использовать эту функцию для загрузки фактической конфигурации, а скорее для значений конфигурации по умолчанию. Фактическая конфигурация должна загружаться с помощью
from_pyfile(), и желательно из местоположения, не находящегося внутри пакета, потому что пакет может быть установлен по всему системному пути.См. Разработка/Производство для примера конфигурации на основе класса с помощью
from_object().
-
from_file(filename, load, silent=False, text=True) -
Обновляет значения в конфигурации из файла, загружаемого с помощью параметра
load. Загруженные данные передаются методуfrom_mapping().import json app.config.from_file("config.json", load=json.load) import tomllib app.config.from_file("config.toml", load=tomllib.load, text=False)- Параметры:
-
- filename (str | PathLike[str]) – Путь к файлу данных. Это может быть абсолютный путь или путь, относительный к корневому пути конфигурации.
-
load (
Callable[[Reader], Mapping]гдеReaderреализует методread.) – Вызываемый объект, который принимает дескриптор файла и возвращает отображение загруженных данных из файла. - silent (bool) – Игнорировать файл, если он не существует.
- text (bool) – Открывать файл в текстовом или двоичном режиме.
- Возвращаемое значение:
-
Trueесли файл был загружен успешно. - Тип возвращаемого значения:
Журнал изменений
Изменено в версии 2.3: Добавлен параметр
text.Добавлен в версии 2.0.
-
from_mapping(mapping=None, **kwargs) -
Обновляет конфигурацию, как
update()игнорируя элементы с ключами, не являющимися верхним регистром.- Возвращаемое значение:
-
Всегда возвращает
True. - Параметры:
- Тип возвращаемого значения:
Журнал изменений
Добавлен в версии 0.11.
-
get_namespace(namespace, lowercase=True, trim_namespace=True) -
Возвращает словарь, содержащий подмножество параметров конфигурации, соответствующих указанному пространству имен/префиксу. Пример использования:
app.config['IMAGE_STORE_TYPE'] = 'fs' app.config['IMAGE_STORE_PATH'] = '/var/app/images' app.config['IMAGE_STORE_BASE_URL'] = 'http://img.website.com' image_store_config = app.config.get_namespace('IMAGE_STORE_')Полученный словарь
image_store_configбудет выглядеть так:{ 'type': 'fs', 'path': '/var/app/images', 'base_url': 'http://img.website.com' }Это часто полезно, когда параметры конфигурации напрямую отображаются на ключевые аргументы в функциях или конструкторах классов.
- Параметры:
- Тип возвращаемого значения:
Журнал изменений
Добавлен в версии 0.11.
-
Справочные данные по потокам
-
flask.stream_with_context(generator_or_function: Iterator) → Iterator - flask.stream_with_context(generator_or_function:Callable[[...],Iterator]) Callable[[Iterator],Iterator]
-
Контексты запросов исчезают при запуске ответа на сервере. Это делается для повышения эффективности и для снижения вероятности возникновения утечек памяти при использовании плохо написанных WSGI-сред. Недостатком является то, что если вы используете потоковые ответы, генератор больше не может получить доступ к информации, связанной с запросом.
Однако эта функция может помочь вам сохранить контекст на более длительное время:
from flask import stream_with_context, request, Response @app.route('/stream') def streamed_response(): @stream_with_context def generate(): yield 'Hello ' yield request.args['name'] yield '!' return Response(generate())В качестве альтернативы ее также можно использовать вокруг определенного генератора:
from flask import stream_with_context, request, Response @app.route('/stream') def streamed_response(): def generate(): yield 'Hello ' yield request.args['name'] yield '!' return Response(stream_with_context(generate()))Журнал изменений
Добавлен в версии 0.9.
Полезные внутренние компоненты
-
class flask.ctx.RequestContext(app, environ, request=None, session=None) -
Контекст запроса содержит информацию, специфичную для каждого запроса. Приложение Flask создаёт и помещает его в начало обработки запроса, затем извлекает его в конце. Он создаст адаптер URL и объект запроса для предоставленной среды WSGI.
Не пытайтесь использовать этот класс напрямую, вместо этого используйте
test_request_context()иrequest_context()для создания этого объекта.При извлечении контекста запроса будут выполнены все функции, зарегистрированные в приложении для завершения выполнения (
teardown_request()).Контекст запроса автоматически извлекается в конце запроса. При использовании интерактивного отладчика контекст будет восстановлен, поэтому
requestпо-прежнему доступен. Аналогично, клиент тестирования может сохранить контекст после завершения запроса. Однако функции завершения могут уже закрыть некоторые ресурсы, такие как подключения к базе данных.- Параметры:
-
- app (Flask)
- environ (WSGIEnvironment)
- request (Request | None)
- session (SessionMixin | None)
-
copy() -
Создаёт копию этого контекста запроса с тем же объектом запроса. Это может быть использовано для перемещения контекста запроса в другую зелёную нить. Поскольку фактический объект запроса остаётся тот же, это нельзя использовать для перемещения контекста запроса в другую нить, если доступ к объекту запроса не заблокирован.
Изменения
Изменено в версии 1.1: Используется текущий объект сессии вместо перезагрузки исходных данных. Это предотвращает
flask.sessionот указания на устаревший объект.Добавлена в версии 0.10.
- Тип возвращаемого значения:
-
match_request() -
Может быть переопределено подклассом для подключения к сопоставлению запроса.
- Тип возвращаемого значения:
-
None
-
pop(exc=_sentinel) -
Извлекает контекст запроса и отвязывает его, выполнив это действие. Это также вызовет выполнение функций, зарегистрированных декоратором
teardown_request().Изменения
Изменено в версии 0.9: Добавлен аргумент
exc.- Параметры:
-
exc (BaseException | None)
- Тип возвращаемого значения:
-
None
-
flask.globals.request_ctx -
Текущий
RequestContext. Если контекст запроса не активен, обращение к атрибутам этого прокси вызоветRuntimeError.Это внутренний объект, который является важным элементом в том, как Flask обрабатывает запросы. Обращение к нему не требуется в большинстве случаев. Скорее всего, вам нужны
requestиsession.
-
class flask.ctx.AppContext(app) -
Контекст приложения содержит информацию, специфичную для приложения. Контекст приложения создаётся и помещается в начало обработки каждого запроса, если он ещё не активен. Контекст приложения также помещается при выполнении команд CLI.
- Параметры:
-
app (Flask)
-
push() -
Связывает контекст приложения с текущим контекстом.
- Тип возвращаемого значения:
-
None
-
pop(exc=_sentinel) -
Извлекает контекст приложения.
- Параметры:
-
exc (BaseException | None)
- Тип возвращаемого значения:
-
None
-
flask.globals.app_ctx -
Текущий
AppContext. Если контекст приложения не активен, обращение к атрибутам этого прокси вызоветRuntimeError.Это внутренний объект, который является важным элементом в том, как Flask обрабатывает запросы. Обращение к нему не требуется в большинстве случаев. Скорее всего, вам нужны
current_appиgвместо него.
-
class flask.blueprints.BlueprintSetupState(blueprint, app, options, first_registration) -
Временный объект для регистрации плагина с приложением. Экземпляр этого класса создаётся методом
make_setup_state()и впоследствии передаётся всем функциям обратного вызова регистрации.-
app -
ссылка на текущее приложение
-
blueprint -
ссылка на плагин, который создал этот объект состояния настройки.
-
options -
словарь со всеми параметрами, которые были переданы методу
register_blueprint().
-
first_registration -
так как плагины могут быть зарегистрированы несколько раз в приложении, и не всё нужно регистрировать несколько раз, этот атрибут может быть использован для определения, был ли плагин зарегистрирован ранее.
-
subdomain -
Поддомен, для которого плагин должен быть активен,
Noneв противном случае.
-
url_prefix -
Префикс, который должен использоваться для всех определённых в плагине URL.
-
url_defaults -
Словарь с URL-значениями по умолчанию, который добавляется к каждому URL, определённому с помощью плагина.
-
add_url_rule(rule, endpoint=None, view_func=None, **options) -
Вспомогательный метод для регистрации правила (и, необязательно, функции представления) в приложении. Имя конечной точки автоматически префиксруется именем плагина.
-
Сигналы
Сигналы предоставляются библиотекой Blinker. См. Сигналы для введения.
-
flask.template_rendered -
Этот сигнал отправляется, когда шаблон был успешно отрисован. Сигнал вызывается с экземпляром шаблона как
templateи контекстом в виде словаря (названногоcontext).Пример подписчика:
def log_template_renders(sender, template, context, **extra): sender.logger.debug('Rendering template "%s" with context %s', template.name or 'string template', context) from flask import template_rendered template_rendered.connect(log_template_renders, app)
- flask.before_render_template
-
Этот сигнал отправляется перед процессом рендеринга шаблона. Сигнал вызывается с экземпляром шаблона как
templateи контекстом в виде словаря (названногоcontext).Пример подписчика:
def log_template_renders(sender, template, context, **extra): sender.logger.debug('Rendering template "%s" with context %s', template.name or 'string template', context) from flask import before_render_template before_render_template.connect(log_template_renders, app)
-
flask.request_started -
Этот сигнал отправляется, когда контекст запроса настроен, перед любой обработкой запроса. Поскольку контекст запроса уже привязан, подписчик может получить доступ к запросу с помощью стандартных глобальных прокси, таких как
request.Пример подписчика:
def log_request(sender, **extra): sender.logger.debug('Request context is set up') from flask import request_started request_started.connect(log_request, app)
-
flask.request_finished -
Этот сигнал отправляется непосредственно перед отправкой ответа клиенту. Передаётся ответ, который нужно отправить, названный
response.Пример подписчика:
def log_response(sender, response, **extra): sender.logger.debug('Request context is about to close down. ' 'Response: %s', response) from flask import request_finished request_finished.connect(log_response, app)
-
flask.got_request_exception -
Этот сигнал отправляется, когда происходит необработанное исключение во время обработки запроса, включая отладку. Исключение передаётся подписчику как
exception.Этот сигнал не отправляется для
HTTPException, или для других исключений, для которых зарегистрированы обработчики ошибок, если исключение не было вызвано из обработчика ошибок.В этом примере показано, как выполнить дополнительное логирование, если произошло теоретическое
SecurityException:from flask import got_request_exception def log_security_exception(sender, exception, **extra): if not isinstance(exception, SecurityException): return security_logger.exception( f"SecurityException at {request.url!r}", exc_info=exception, ) got_request_exception.connect(log_security_exception, app)
-
flask.request_tearing_down -
Этот сигнал отправляется, когда запрос разворачивается. Он всегда вызывается, даже если возникает исключение. В настоящее время функции, подключённые к этому сигналу, вызываются после стандартных обработчиков разворачивания, но на это нельзя полагаться.
Пример подписчика:
def close_db_connection(sender, **extra): session.close() from flask import request_tearing_down request_tearing_down.connect(close_db_connection, app)Начиная с Flask 0.9, также будет передан аргумент
exc, который содержит ссылку на исключение, вызвавшее разворачивание, если оно имело место.
-
flask.appcontext_tearing_down -
Этот сигнал отправляется, когда контекст приложения закрывается. Он всегда вызывается, даже если возникает исключение. В настоящее время функции, подключённые к этому сигналу, вызываются после стандартных обработчиков разворачивания, но на это нельзя полагаться.
Пример подписчика:
def close_db_connection(sender, **extra): session.close() from flask import appcontext_tearing_down appcontext_tearing_down.connect(close_db_connection, app)Также будет передан аргумент
exc, который содержит ссылку на исключение, вызвавшее разворачивание, если оно имело место.
-
flask.appcontext_pushed -
Этот сигнал отправляется, когда контекст приложения подталкивается. Отправителем является приложение. Это обычно полезно для модульных тестов, чтобы временно подключить информацию. Например, это можно использовать для ранней установки ресурса в объект
g.Пример использования:
from contextlib import contextmanager from flask import appcontext_pushed @contextmanager def user_set(app, user): def handler(sender, **kwargs): g.user = user with appcontext_pushed.connected_to(handler, app): yieldИ в коде теста:
def test_user_me(self): with user_set(app, 'john'): c = app.test_client() resp = c.get('/users/me') assert resp.data == 'username=john'Changelog
Добавлен в версии 0.10.
-
flask.appcontext_popped -
Этот сигнал отправляется, когда контекст приложения выталкивается. Отправителем является приложение. Это обычно согласуется с сигналом
appcontext_tearing_down.Changelog
Добавлен в версии 0.10.
-
flask.message_flashed -
Этот сигнал отправляется, когда приложение выводит сообщение. Сообщение отправляется как аргумент
messageи категория какcategory.Пример подписчика:
recorded = [] def record(sender, message, category, **extra): recorded.append((message, category)) from flask import message_flashed message_flashed.connect(record, app)Changelog
Добавлен в версии 0.10.
Базовые представления на основе классов
Журнал изменений
Добавлена в версии 0.7.
-
class flask.views.View -
Унаследуйте от этого класса и переопределите
dispatch_request(), чтобы создать обобщенное представление на основе класса. Вызовитеas_view(), чтобы создать функцию представления, которая создаёт экземпляр класса с заданными аргументами и вызывает его методdispatch_requestс любыми переменными URL.Подробное руководство см. в Базовые представления на основе классов.
class Hello(View): init_every_request = False def dispatch_request(self, name): return f"Hello, {name}!" app.add_url_rule( "/hello/<name>", view_func=Hello.as_view("hello") )Установите
methodsдля изменения методов, которые принимает представление.Установите
decoratorsдля применения списка декораторов к сгенерированной функции представления. Декораторы, применённые к самому классу, не будут применены к сгенерированной функции представления!Установите
init_every_requestвFalseдля повышения эффективности, если вам не нужно хранить данные, глобальные для запроса, вself.-
methods: ClassVar[Collection[str] | None] = None -
Методы, для которых зарегистрировано это представление. Использует те же значения по умолчанию (
["GET", "HEAD", "OPTIONS"]) что иrouteиadd_url_ruleпо умолчанию.
-
provide_automatic_options: ClassVar[bool | None] = None -
Управление тем, обрабатывается ли метод
OPTIONSавтоматически. Использует те же значения по умолчанию (True) что иrouteиadd_url_ruleпо умолчанию.
-
decorators: ClassVar[list[Callable[[...], Any]]] = [] -
Список декораторов, которые будут применяться в порядке следования к сгенерированной функции представления. Имейте в виду, что синтаксис
@decoratorприменяется снизу вверх, поэтому первый декоратор в списке будет самым нижним декоратором.Журнал изменений
Добавлена в версии 0.8.
-
init_every_request: ClassVar[bool] = True -
Создаёт новый экземпляр этого класса представления для каждого запроса по умолчанию. Если подкласс представления устанавливает это значение в
False, используется тот же экземпляр для каждого запроса.Один экземпляр более эффективен, особенно если сложная настройка выполняется во время инициализации. Однако хранение данных в
selfбольше не безопасно для запросов, и вместо этого следует использоватьg.Журнал изменений
Добавлена в версии 2.2.
-
dispatch_request() -
Фактическое поведение функции представления. Подклассы должны переопределить этот метод и вернуть допустимый ответ. Любые переменные из правила URL передаются в качестве именованных аргументов.
- Тип возвращаемого значения:
-
ft.ResponseReturnValue
-
classmethod as_view(name, *class_args, **class_kwargs) -
Преобразует класс в функцию представления, которая может быть зарегистрирована для маршрута.
По умолчанию сгенерированное представление создаст новый экземпляр класса представления для каждого запроса и вызовет его метод
dispatch_request(). Если класс представления устанавливаетinit_every_requestвFalse, будет использован тот же экземпляр для каждого запроса.За исключением
name, все остальные аргументы, переданные в этот метод, передаются методу класса представления__init__.Журнал изменений
Изменено в версии 2.2: Добавлен атрибут класса
init_every_request.- Параметры:
-
- name (str)
- class_args (t.Any)
- class_kwargs (t.Any)
- Тип возвращаемого значения:
-
ft.RouteCallable
-
-
class flask.views.MethodView -
Перенаправляет методы запросов к соответствующим методам экземпляра. Например, если вы реализуете метод
get, он будет использоваться для обработки запросовGET.Это может быть полезно для определения REST API.
methodsавтоматически настраивается на основе методов, определённых в классе.Подробное руководство см. в Базовые представления на основе классов.
class CounterAPI(MethodView): def get(self): return str(session.get("counter", 0)) def post(self): session["counter"] = session.get("counter", 0) + 1 return redirect(url_for("counter")) app.add_url_rule( "/counter", view_func=CounterAPI.as_view("counter") )-
dispatch_request(**kwargs) -
Фактическое поведение функции представления. Подклассы должны переопределить этот метод и вернуть допустимый ответ. Любые переменные из правила URL передаются в качестве именованных аргументов.
- Параметры:
-
kwargs (t.Any)
- Тип возвращаемого значения:
-
ft.ResponseReturnValue
-
Регистрация маршрутов URL
В целом, есть три способа определить правила для системы маршрутизации:
- Можно использовать декоратор
flask.Flask.route(). - Можно использовать функцию
flask.Flask.add_url_rule(). - Можно напрямую обратиться к внутренней системе маршрутизации Werkzeug, которая представлена как
flask.Flask.url_map.
Переменные части маршрута можно указать с помощью угловых скобок (/user/<username>). По умолчанию переменная часть в URL принимает любую строку без косой черты, однако можно указать другой преобразователь, используя <converter:name>.
Переменные части передаются функции представления в качестве ключевых аргументов.
Доступны следующие преобразователи:
| принимает любой текст без косой черты (по умолчанию) |
| принимает целые числа |
| подобно |
| подобно умолчанию, но также принимает косые черты |
| сопоставляет один из предоставленных элементов |
| принимает строки UUID |
Пользовательские преобразователи можно определить, используя flask.Flask.url_map.
Вот несколько примеров:
@app.route('/')
def index():
pass
@app.route('/<username>')
def show_user(username):
pass
@app.route('/post/<int:post_id>')
def show_post(post_id):
pass
Важный момент, который следует учитывать, – это то, как Flask обрабатывает конечные косые черты. Идея заключается в том, чтобы сохранить уникальность каждого URL, поэтому применяются следующие правила:
- Если правило заканчивается косой чертой, а пользователь запрашивает его без косой черты, пользователь автоматически перенаправляется на ту же страницу с добавленной конечной косой чертой.
- Если правило не заканчивается конечной косой чертой, а пользователь запрашивает страницу с конечной косой чертой, генерируется ошибка 404 «Не найдено».
Это согласуется с тем, как веб-серверы обрабатывают статические файлы. Это также позволяет безопасно использовать относительные ссылки.
Вы также можете определить несколько правил для одной и той же функции. Однако они должны быть уникальными. Также можно задать значения по умолчанию. Например, вот определение URL, который принимает необязательную страницу:
@app.route('/users/', defaults={'page': 1})
@app.route('/users/page/<int:page>')
def show_users(page):
pass
Это указывает, что /users/ будет URL для первой страницы, а /users/page/N будет URL для страницы N.
Если URL содержит значение по умолчанию, он будет перенаправлен на его упрощенную форму с перенаправлением 301. В приведенном выше примере /users/page/1 будет перенаправлен на /users/. Если ваш маршрут обрабатывает запросы GET и POST, убедитесь, что маршрут по умолчанию обрабатывает только GET, так как перенаправления не могут сохранять данные формы.
@app.route('/region/', defaults={'id': 1})
@app.route('/region/<int:id>', methods=['GET', 'POST'])
def region(id):
pass
Вот параметры, которые принимают route() и add_url_rule(). Единственное отличие состоит в том, что с параметром route функция представления определяется с помощью декоратора, а не параметра view_func.
| правило URL в виде строки |
| имя конечной точки зарегистрированного правила URL. Flask по умолчанию предполагает, что имя функции представления является именем конечной точки, если не указано явно. |
| функция, которая вызывается при обработке запроса к указанной конечной точке. Если она не предоставлена, можно указать функцию позже, сохранив её в словаре |
| словарь со значениями по умолчанию для данного правила. Смотрите пример выше, чтобы узнать, как работают значения по умолчанию. |
| устанавливает правило для поддомена в случае использования сопоставления поддоменов. Если не указано, предполагается использование поддомена по умолчанию. |
| параметры, передаваемые в объект |
Параметры функции представления
Для внутреннего использования функции представления могут иметь некоторые атрибуты, настраивающие поведение, которое функция представления обычно не контролирует. Следующие атрибуты могут быть предоставлены необязательно для переопределения некоторых значений по умолчанию для add_url_rule() или для общего поведения:
-
__name__: Имя функции по умолчанию используется как конечная точка. Если конечная точка указана явно, используется это значение. Кроме того, по умолчанию к этому значению добавляется имя бланкета, что не может быть изменено из самой функции. -
methods: Если методы не указаны при добавлении правила URL, Flask будет искать в самом объекте функции представления атрибутmethods. Если он есть, Flask получит информацию о методах оттуда. -
provide_automatic_options: Если этот атрибут установлен, Flask либо включит, либо отключит автоматическую реализацию HTTPOPTIONSответа. Это может быть полезно при работе с декораторами, которые хотят настроить ответOPTIONSна основе каждой функции представления. -
required_methods: Если этот атрибут установлен, Flask всегда добавит эти методы при регистрации правила URL, даже если методы были явно переопределены в вызовеroute().
Полный пример:
def index():
if request.method == 'OPTIONS':
# custom options handling here
...
return 'Hello World!'
index.provide_automatic_options = False
index.methods = ['GET', 'OPTIONS']
app.add_url_rule('/', index)
Журнал изменений
Добавлен в версии 0.8: Функциональность provide_automatic_options была добавлена.
Интерфейс командной строки
-
class flask.cli.FlaskGroup(add_default_commands=True, create_app=None, add_version_option=True, load_dotenv=True, set_debug_flag=True, **extra) -
Специальный подкласс группы
AppGroup, который поддерживает загрузку дополнительных команд из настроенного приложения Flask. Разработчику обычно не нужно взаимодействовать с этим классом, но существуют некоторые очень сложные случаи, когда создание экземпляра этого класса имеет смысл. Смотрите Пользовательские скрипты.- Параметры:
-
- add_default_commands (bool) – если True, то будут добавлены команды по умолчанию run и shell.
-
add_version_option (bool) – добавляет опцию
--version. - create_app (t.Callable[..., Flask] | None) – необязательный обработчик, который принимает информацию о скрипте и возвращает загруженное приложение.
-
load_dotenv (bool) – Загрузить ближайшие файлы
.envи.flaskenvдля установки переменных окружения. Также изменит рабочую директорию на директорию, содержащую первый найденный файл. - set_debug_flag (bool) – Установить флаг отладки приложения.
- extra (t.Any)
Изменено в версии 3.1:
-e pathимеет приоритет над файлами по умолчанию.envи.flaskenv.Журнал изменений
Изменено в версии 2.2: Добавлены опции
-A/--app,--debug/--no-debug,-e/--env-file.Изменено в версии 2.2: Контекст приложения выталкивается при выполнении команд
app.cli, поэтому@with_appcontextбольше не требуется для этих команд.Изменено в версии 1.0: При установке используется python-dotenv для загрузки переменных окружения из файлов
.envи.flaskenv.-
get_command(ctx, name) -
Принимая контекст и имя команды, возвращает объект
Command, если он существует, илиNone.
-
list_commands(ctx) -
Возвращает список имён подкоманд в порядке их появления.
-
make_context(info_name, args, parent=None, **extra) -
Эта функция, получая имя информации и аргументы, запускает разбор и создаёт новый
Context. Однако она не вызывает фактический обработчик команды.Чтобы быстро настроить используемый класс контекста без переопределения этого метода, задайте атрибут
context_class.- Параметры:
-
- info_name (str | None) – имя информации для данного вызова. Обычно это наиболее описательное имя для скрипта или команды. Для скрипта верхнего уровня это обычно имя скрипта, для команд ниже – имя команды.
- args (list[str]) – аргументы для разбора в виде списка строк.
- parent (Context | None) – родительский контекст, если доступен.
- extra (Any) – дополнительные ключевые аргументы, переданные конструктору контекста.
- Тип возвращаемого значения:
Изменено в версии 8.0: Добавлен атрибут
context_class.
-
class flask.cli.AppGroup(name=None, commands=None, **attrs) -
Это работает аналогично обычной команде click
Group, но меняет поведение декоратораcommand(), так что он автоматически оборачивает функции вwith_appcontext().Не путать с
FlaskGroup.- Параметры:
-
command(*args, **kwargs) -
Это работает точно так же, как метод с таким же именем в обычном
click.Group, но он оборачивает обратные вызовы вwith_appcontext(), если это не отключено с помощьюwith_appcontext=False.
-
class flask.cli.ScriptInfo(app_import_path=None, create_app=None, set_debug_flag=True, load_dotenv_defaults=True) -
Вспомогательный объект для работы с приложениями Flask. Обычно нет необходимости взаимодействовать с ним, так как он используется внутри для диспетчеризации click. В будущих версиях Flask этот объект, скорее всего, будет играть большую роль. Обычно он создается автоматически
FlaskGroup, но вы также можете создать его вручную и передать как объект click.Изменено в версии 3.1: Добавлен параметр и атрибут
load_dotenv_defaults.- Параметры:
-
app_import_path -
Необязательно, путь импорта приложения Flask.
-
create_app -
Необязательно, функция, которая принимает script info для создания экземпляра приложения.
-
data: dict[t.Any, t.Any] -
Словарь с произвольными данными, которые можно связать с этим script info.
-
load_dotenv_defaults -
Нужно ли загрузить файлы по умолчанию
.flaskenvи.env.ScriptInfoничего не загружает, это для справки при загрузке в другом месте во время обработки.Добавлен в версии 3.1.
-
load_app() -
Загружает приложение Flask (если оно еще не загружено) и возвращает его. Вызов этого метода несколько раз приведет только к возвращению уже загруженного приложения.
- Тип возвращаемого значения:
-
flask.cli.load_dotenv(path=None, load_defaults=True) -
Загрузка файлов “dotenv” для установки переменных окружения. Указанный путь имеет приоритет перед
.env, который имеет приоритет перед.flaskenv. После загрузки и объединения этих файлов, значения устанавливаются только если ключ еще не установлен вos.environ.Это ничего не делает, если python-dotenv не установлен.
- Параметры:
- Возвращаемое значение:
-
Trueесли по крайней мере одна переменная окружения была загружена. - Тип возвращаемого значения:
Изменено в версии 3.1: Добавлен параметр
load_defaults. Указанный путь имеет приоритет перед файлами по умолчанию.Изменения
Изменено в версии 2.0: Текущая директория не изменяется на место загруженного файла.
Изменено в версии 2.0: При загрузке файлов env устанавливается кодировка по умолчанию UTF-8.
Изменено в версии 1.1.0: Возвращает
Falseесли python-dotenv не установлен, или указанный путь не является файлом.Добавлен в версии 1.0.
-
flask.cli.with_appcontext(f) -
Оборачивает обратный вызов, гарантируя, что он будет выполнен в контексте приложения скрипта.
Пользовательские команды (и их параметры), зарегистрированные под
app.cliилиblueprint.cli, всегда будут иметь доступ к контексту приложения; в этом случае декоратор не требуется.Журнал изменений
Изменено в версии 2.2: Контекст приложения активен как для подкоманд, так и для обратного вызова, помеченного декоратором. Контекст приложения всегда доступен для обратных вызовов команд и параметров
app.cli.- Параметры:
-
f (F)
- Тип возвращаемого значения:
-
F
-
flask.cli.pass_script_info(f) -
Помечает функцию таким образом, что экземпляр
ScriptInfoпередаётся в качестве первого аргумента вызову click.- Параметры:
-
f (t.Callable[te.Concatenate[T, P], R])
- Тип возвращаемого значения:
-
t.Callable[P, R]
-
flask.cli.run_command = <Command run> -
Запуск локального сервера разработки.
Этот сервер предназначен только для целей разработки. Он не обеспечивает стабильность, безопасность или производительность серверов WSGI для производства.
Релоадер и отладчик включены по умолчанию с опцией ‘–debug’.
-
flask.cli.shell_command = <Command shell> -
Запуск интерактивной оболочки Python в контексте заданного приложения Flask. Приложение заполнит пространство имён по умолчанию этой оболочки в соответствии с её конфигурацией.
Это полезно для выполнения небольших фрагментов управляющего кода без необходимости ручного конфигурирования приложения.
© 2010 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/stable/api/