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 | 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 | None) – папка, содержащая шаблоны, которые должны использоваться приложением. По умолчанию папка
'templates'в корне приложения. -
instance_path (str | None) – альтернативный путь к экземпляру приложения. По умолчанию предполагается, что папка
'instance'рядом с пакетом или модулем является путём экземпляра. -
instance_relative_config (bool) – если установлено в
Trueимена файлов, относящиеся к конфигурации, предполагаются относительными к пути экземпляра, а не к корню приложения. - root_path (str | None) – путь к корню файлов приложения. Это следует устанавливать вручную только в тех случаях, когда его невозможно определить автоматически, например, для пакетов имён.
-
aborter -
Экземпляр
aborter_class, созданныйmake_aborter(). Используетсяflask.abort()для повышения HTTP-ошибок, и также может вызываться напрямую.Журнал изменений
В версии 2.2: Перемещено из
flask.abort, который вызывает этот объект.
-
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().Changelog
Новое в версии 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.after_app_request().- Параметры:
-
f (T_after_request) –
- Тип возвращаемого значения:
-
T_after_request
-
after_request_funcs: dict[ft.AppOrBlueprintKey, list[ft.AfterRequestCallable]] -
Структура данных функций, которые будут вызваны в конце каждого запроса, в формате
{scope: [functions]}. Ключscope— это имя модуля, для которого функции активны, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
after_request().Эта структура данных внутренняя. Не следует изменять её напрямую, и её формат может измениться в любое время.
-
app_context() -
Создайте
AppContext. Используйте в блокеwithдля помещения контекста, что заставитcurrent_appуказывать на это приложение.Контекст приложения автоматически помещается в
RequestContext.push()при обработке запроса и при выполнении команды командной строки. Используйте это для ручного создания контекста вне этих ситуаций.with app.app_context(): init_db()См. Контекст приложения.
Changelog
Новое в версии 0.9.
- Тип возвращаемого значения:
-
app_ctx_globals_class -
Псевдоним для
_AppCtxGlobals
-
async_to_sync(func) -
Возвращает синхронную функцию, которая выполнит функцию корутины.
result = app.async_to_sync(func)(*args, **kwargs)
Переопределите этот метод, чтобы изменить способ, которым приложение преобразует асинхронный код в синхронный вызываемый код.
Changelog
Новое в версии 2.0.
-
auto_find_instance_path() -
Попытка найти путь к экземпляру, если он не был предоставлен конструктору класса приложения. В основном вычислит путь к папке с именем
instanceрядом с вашим основным файлом или пакетом.Changelog
Новое в версии 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.before_app_request().- Параметры:
-
f (T_before_request) –
- Тип возвращаемого значения:
-
T_before_request
-
-
before_request_funcs: dict[ft.AppOrBlueprintKey, list[ft.BeforeRequestCallable]] -
Структура данных функций, которые вызываются в начале каждого запроса, в формате
{scope: [functions]}. Ключscope— имя модуля, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
before_request().Эта структура данных внутренняя. Не следует изменять её напрямую, и её формат может быть изменён в любое время.
-
blueprints: dict[str, Blueprint] -
Сопоставление зарегистрированных имён модулей с объектами модулей. Словарь сохраняет порядок регистрации модулей. Модули могут быть зарегистрированы несколько раз, это не учитывается в словаре.
Изменения
Введено в версии 0.7.
-
cli -
Группа команд Click для регистрации команд командной строки для этого объекта. Команды доступны из команды
flaskпосле обнаружения приложения и регистрации модулей.
-
config -
Словарь конфигурации как
Config. Он ведет себя точно так же, как обычный словарь, но поддерживает дополнительные методы для загрузки конфигурации из файлов.
-
config_class -
Псевдоним
Config
-
context_processor(f) -
Регистрирует функцию обработчика контекста шаблона. Эти функции выполняются перед рендерингом шаблона. Ключи возвращённого словаря добавляются как переменные, доступные в шаблоне.
Доступен как для приложения, так и для модулей. При использовании на приложении, он вызывается для каждого рендеренного шаблона. При использовании в модуле, он вызывается для шаблонов, рендеренных из представлений модуля. Чтобы зарегистрировать с модулем и повлиять на все шаблоны, используйте
Blueprint.app_context_processor().- Параметры:
-
f (T_template_context_processor) –
- Тип возвращаемого значения:
-
T_template_context_processor
-
create_global_jinja_loader() -
Создаёт загрузчик для среды Jinja2. Может использоваться для переопределения только загрузчика и сохранения остальных параметров без изменений. Не рекомендуется переопределять эту функцию. Вместо этого нужно переопределить функцию
jinja_loader().Глобальный загрузчик переключается между загрузчиками приложения и отдельных модулей.
Изменения
Введено в версии 0.7.
- Тип возвращаемого значения:
-
DispatchingJinjaLoader
-
create_jinja_environment() -
Создаёт среду Jinja на основе
jinja_optionsи различных методов приложения, связанных с Jinja. Изменениеjinja_optionsпосле этого не повлияет. Также добавляет глобальные переменные и фильтры, связанные с Flask, в среду.Изменения
Изменено в версии 0.11:
Environment.auto_reloadустанавливается в соответствии с параметром конфигурацииTEMPLATES_AUTO_RELOAD.Введено в версии 0.5.
- Тип возвращаемого значения:
-
Environment
-
create_url_adapter(request) -
Создаёт адаптер URL для данного запроса. Адаптер URL создаётся в момент, когда контекст запроса ещё не настроен, поэтому запрос передаётся явно.
Изменения
Изменено в версии 1.0:
SERVER_NAMEбольше не неявно включает сопоставление по поддоменам. Используйтеsubdomain_matchingвместо этого.Изменено в версии 0.9: Теперь это можно вызвать и без объекта запроса, когда адаптер URL создаётся для контекста приложения.
Введено в версии 0.6.
- Параметры:
-
request (Request | None) –
- Тип возвращаемого значения:
-
MapAdapter | None
-
property debug: bool -
Включен ли режим отладки. При использовании
flask runдля запуска сервера разработки, будет показан интерактивный отладчик для необработанных исключений, а сервер будет перезагружаться при изменении кода. Это соответствует ключу конфигурацииDEBUG. Может работать некорректно, если задано поздно.Не включайте режим отладки при развертывании в производственной среде.
Значение по умолчанию:
False
-
default_config = {'APPLICATION_ROOT': '/', 'DEBUG': None, 'EXPLAIN_TEMPLATE_LOADING': False, 'MAX_CONTENT_LENGTH': None, 'MAX_COOKIE_SIZE': 4093, 'PERMANENT_SESSION_LIFETIME': datetime.timedelta(days=31), 'PREFERRED_URL_SCHEME': 'http', 'PROPAGATE_EXCEPTIONS': None, 'SECRET_KEY': None, 'SEND_FILE_MAX_AGE_DEFAULT': None, 'SERVER_NAME': None, 'SESSION_COOKIE_DOMAIN': None, 'SESSION_COOKIE_HTTPONLY': True, 'SESSION_COOKIE_NAME': 'session', 'SESSION_COOKIE_PATH': None, 'SESSION_COOKIE_SAMESITE': None, 'SESSION_COOKIE_SECURE': False, 'SESSION_REFRESH_EACH_REQUEST': True, 'TEMPLATES_AUTO_RELOAD': None, 'TESTING': False, 'TRAP_BAD_REQUEST_ERRORS': None, 'TRAP_HTTP_EXCEPTIONS': False, 'USE_X_SENDFILE': False} -
Параметры конфигурации по умолчанию.
-
delete(rule, **options) -
Сокращённая запись для
route()сmethods=["DELETE"].Изменения
Введено в версии 2.0.
-
dispatch_request() -
Выполняет обработку запроса. Сопоставляет URL и возвращает значение представления или обработчика ошибок. Это не обязательно должен быть объект ответа. Для преобразования возвращаемого значения в соответствующий объект ответа вызовите
make_response().Изменения
Изменено в версии 0.7: Больше не обрабатывает исключения, этот код был перемещён в новую функцию
full_dispatch_request().- Тип возвращаемого значения:
-
ft.ResponseReturnValue
-
do_teardown_appcontext(exc=<object object>) -
Вызывается непосредственно перед тем, как контекст приложения будет удалён.
При обработке запроса контекст приложения удаляется после контекста запроса. См.
do_teardown_request().Вызывает все функции, помеченные декоратором
teardown_appcontext(). Затем отправляется сигналappcontext_tearing_down.Вызывается функцией
AppContext.pop().Изменения
Введено в версии 0.9.
- Параметры:
-
exc (BaseException | None) –
- Тип возвращаемого значения:
-
None
-
-
do_teardown_request(exc=<object object>) -
Вызывается после обработки запроса и возврата ответа, прямо перед тем, как контекст запроса будет удалён.
Вызывает все функции, помеченные декоратором
teardown_request(), иBlueprint.teardown_request(), если запрос обрабатывался планом. Наконец, отправляется сигналrequest_tearing_down.Вызывается методом
RequestContext.pop(), который может быть отложен во время тестирования для сохранения доступа к ресурсам.- Параметры:
-
exc (BaseException | None) – Необработанное исключение, возникшее во время обработки запроса. Определяется из текущей информации об исключении, если не передано. Передаётся каждой функции завершения.
- Тип возвращаемого значения:
-
None
Журнал изменений
Изменено в версии 0.9: Добавлен аргумент
exc.
-
endpoint(endpoint) -
Декорирует функцию представления для регистрации её по заданному конечной точке. Используется, если правило добавлено без
view_funcс помощьюadd_url_rule().app.add_url_rule("/ex", endpoint="example") @app.endpoint("example") def example(): ...
-
ensure_sync(func) -
Обеспечение синхронности функции для рабочих процессов WSGI. Простые функции
defвозвращаются как есть.async defфункции оборачиваются для запуска и ожидания ответа.Переопределите этот метод, чтобы изменить способ работы асинхронных представлений приложения.
Журнал изменений
Добавлено в версии 2.0.
-
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().Эта структура данных внутренняя. Её не следует изменять напрямую, и её формат может измениться в любое время.
-
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().Журнал изменений
Добавлено в версии 0.7: Используйте
register_error_handler()вместо непосредственного измененияerror_handler_specдля обработчиков ошибок на уровне приложения.Добавлено в версии 0.7: Теперь также можно регистрировать пользовательские типы исключений, которые необязательно должны быть подклассами класса
HTTPException.
-
extensions: dict -
Место, где расширения могут хранить специфичные для приложения данные. Например, расширение может хранить здесь базы данных и аналогичные вещи.
Ключ должен соответствовать имени модуля расширения. Например, в случае расширения «Flask-Foo» в
flask_foo, ключом будет'foo'.Журнал изменений
Добавлено в версии 0.7.
-
full_dispatch_request() -
Обрабатывает запрос и помимо этого выполняет предварительную и последующую обработку запроса, а также перехват исключений HTTP и обработку ошибок.
Журнал изменений
Добавлено в версии 0.7.
- Тип возвращаемого значения:
-
-
get_send_file_max_age(filename) -
Используется
send_file()для определения значения кешированияmax_ageдля заданного пути к файлу, если оно не было передано.По умолчанию возвращает
SEND_FILE_MAX_AGE_DEFAULTиз конфигурацииcurrent_app. По умолчанию этоNone, что указывает браузеру использовать условные запросы вместо кеширования по времени, что обычно предпочтительнее.Changelog
Изменено в версии 2.0: Значение по умолчанию —
Noneвместо 12 часов.Добавлена в версии 0.9.
-
property got_first_request: bool -
Этот атрибут устанавливается в
True, если приложение начало обработку первого запроса.Устарело начиная с версии 2.3: Будет удалено в Flask 2.4.
Changelog
Добавлена в версии 0.8.
-
handle_exception(e) -
Обрабатывает исключение, для которого не был задан обработчик ошибок или которое возникло в обработчике ошибок. Это всегда приводит к возврату 500
InternalServerError.Всегда отправляет сигнал
got_request_exception.Если
PROPAGATE_EXCEPTIONSравноTrue, например, в режиме отладки, ошибка будет повторно поднята, чтобы отладчик мог её отобразить. В противном случае исходное исключение регистрируется, и возвращаетсяInternalServerError.Если обработчик ошибок зарегистрирован для
InternalServerErrorили500, он будет использован. Для согласованности, обработчик всегда получаетInternalServerError. Исходное необработанное исключение доступно какe.original_exception.Changelog
Изменено в версии 1.1.0: Всегда передает экземпляр
InternalServerErrorобработчику, устанавливаяoriginal_exceptionв значение необработанной ошибки.Изменено в версии 1.1.0:
after_requestфункции и другие завершающие действия выполняются даже для стандартного ответа 500, когда нет обработчика.Добавлена в версии 0.3.
- Параметры:
-
e (Исключение) –
- Тип возвращаемого значения:
-
handle_http_exception(e) -
Обрабатывает исключение HTTP. По умолчанию вызывает зарегистрированные обработчики ошибок и возвращает исключение как ответ.
Changelog
Изменено в версии 1.0.3:
RoutingException, используемый внутри для действий, таких как перенаправление на слеш во время маршрутизации, не передаётся в обработчики ошибок.Изменено в версии 1.0: Исключения ищутся по коду и по MRO, поэтому подклассы
HTTPExceptionмогут обрабатываться общим обработчиком для базовогоHTTPException.Добавлена в версии 0.3.
- Параметры:
-
e (HTTPException) –
- Тип возвращаемого значения:
-
HTTPException | ft.ResponseReturnValue
-
handle_url_build_error(error, endpoint, values) -
Вызывается
url_for(), если было поднято исключениеBuildError. Если это возвращает значение, оно будет возвращеноurl_for, в противном случае ошибка будет повторно поднята.Каждая функция в
url_build_error_handlersвызывается сerror,endpointиvalues. Если функция возвращаетNoneили поднимаетBuildError, она пропускается. В противном случае её возвращаемое значение возвращаетсяurl_for.
-
handle_user_exception(e) -
Этот метод вызывается всякий раз, когда возникает исключение, которое должно быть обработано. Особо следует отметить
HTTPException, который передаётся методуhandle_http_exception(). Эта функция либо вернёт значение ответа, либо повторно поднимет исключение с тем же трассировкой стека.Changelog
Изменено в версии 1.0: Ошибки ключей, поднятые из данных запроса, например,
formпоказывают плохой ключ в режиме отладки, а не общее сообщение об ошибке плохого запроса.Добавлена в версии 0.7.
- Параметры:
-
e (Исключение) –
- Тип возвращаемого значения:
-
HTTPException | ft.ResponseReturnValue
-
property has_static_folder: bool -
True, еслиstatic_folderустановлен.Changelog
Добавлена в версии 0.5.
-
import_name -
Имя пакета или модуля, к которому принадлежит этот объект. Не изменяйте его после установки конструктором.
-
inject_url_defaults(endpoint, values) -
Вставляет значения по умолчанию URL для заданной точки входа непосредственно в словарь values. Используется внутри и вызывается автоматически при построении URL.
Changelog
Добавлена в версии 0.7.
-
instance_path -
Содержит путь к папке экземпляра.
Changelog
Добавлена в версии 0.8.
-
-
iter_blueprints() -
Итерирует по всем зарегистрированным блейпринтам в порядке их регистрации.
Changelog
Новая версия 0.11.
- Тип возвращаемого значения:
-
t.ValuesView[Блейпринт]
-
property jinja_env: Environment -
Среда Jinja, используемая для загрузки шаблонов.
Среда создаётся в первый раз при обращении к этому свойству. Изменение
jinja_optionsпосле этого не повлияет.
-
jinja_environment -
Псевдоним для
Environment
-
property jinja_loader: FileSystemLoader | None -
Загрузчик Jinja для шаблонов этого объекта. По умолчанию это класс
jinja2.loaders.FileSystemLoaderпо адресуtemplate_folder, если он задан.Changelog
Новая версия 0.5.
-
jinja_options: dict = {} -
Параметры, передаваемые в среду Jinja в
create_jinja_environment(). Изменение этих параметров после создания среды (обращение кjinja_env) не повлияет.Changelog
Изменено в версии 1.1.0: Это
dictвместоImmutableDict, чтобы упростить настройку.
-
json: JSONProvider -
Предоставляет доступ к методам JSON. Функции в
flask.jsonвызовут методы этого поставщика, когда контекст приложения активен. Используется для обработки запросов и ответов JSON.Экземпляр
json_provider_class. Может быть настроен путём изменения этого атрибута в подклассе или последующего присваивания.По умолчанию,
DefaultJSONProvider, использует встроенную в Python библиотекуjson. Различные поставщики могут использовать разные библиотеки JSON.Changelog
Новая версия 2.2.
-
json_provider_class -
Псевдоним для
DefaultJSONProvider
-
log_exception(exc_info) -
Регистрирует исключение. Вызывается
handle_exception(), если отладка отключена, и сразу перед вызовом обработчика. По умолчанию регистрирует исключение как ошибку вlogger.Changelog
Новая версия 0.8.
- Параметры:
-
exc_info (кортеж[тип, BaseException, обработка_ошибок] | кортеж[None, None, None]) –
- Тип возвращаемого значения:
-
None
-
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.
-
make_default_options_response() -
Этот метод вызывается для создания ответа по умолчанию
OPTIONS. Его можно изменить путём наследования, чтобы изменить стандартное поведение ответовOPTIONS.Changelog
Новая версия 0.7.
- Тип возвращаемого значения:
-
-
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: Ранее кортеж интерпретировался как аргументы для объекта ответа.
-
make_shell_context() -
Возвращает контекст оболочки для интерактивной оболочки для этого приложения. Это выполняет все зарегистрированные обработчики контекста оболочки.
Изменения
Добавлена в версии 0.11.
- Тип возвращаемого значения:
-
property name: str -
Имя приложения. Обычно это имя импорта с отличием, которое определяется из файла запуска, если имя импорта равно main. Это имя используется в качестве отображаемого имени, когда Flask нуждается в имени приложения. Его можно задать и переопределить, чтобы изменить значение.
Изменения
Добавлена в версии 0.8.
-
open_instance_resource(resource, mode='rb') -
Открывает ресурс из папки экземпляра приложения (
instance_path). В противном случае работает какopen_resource(). Ресурсы экземпляра также можно открыть для записи.
-
open_resource(resource, mode='rb') -
Открывает файл ресурса, относящийся к
root_pathдля чтения.Например, если файл
schema.sqlнаходится рядом с файломapp.py, где определено приложениеFlask, его можно открыть следующим образом:with app.open_resource("schema.sql") as f: conn.executescript(f.read())
-
patch(rule, **options) -
Сокращение для
route()сmethods=["PATCH"].Изменения
Добавлена в версии 2.0.
-
permanent_session_lifetime -
timedelta, используемая для установки даты истечения срока действия постоянной сессии. По умолчанию 31 день, что обеспечивает срок действия постоянной сессии примерно в один месяц.Этот атрибут также можно настроить из конфигурации с ключом конфигурации
PERMANENT_SESSION_LIFETIME. Значение по умолчаниюtimedelta(days=31)
-
-
preprocess_request() -
Вызывается перед обработкой запроса. Вызывает зарегистрированные в приложении и текущем шаблоне
url_value_preprocessorsобработчики значений URL. Затем вызывает зарегистрированные в приложении и шаблонеbefore_request_funcsобработчики перед запросом.Если какой-либо обработчик
before_request()возвращает ненулевое значение, это значение обрабатывается как возвращаемое значение представления, и дальнейшая обработка запроса останавливается.- Тип возвращаемого значения:
-
ft.ResponseReturnValue | None
-
process_response(response) -
Может быть переопределён для изменения объекта ответа перед отправкой в сервер WSGI. По умолчанию вызывает все функции, декорированные
after_request().Изменения
Изменено в версии 0.5: Начиная с Flask 0.5, функции, зарегистрированные для выполнения после запроса, вызываются в обратном порядке регистрации.
- Параметры:
-
response (Response) – объект
response_class. - Возвращаемое значение:
-
новый объект ответа или тот же, должен быть экземпляром
response_class. - Тип возвращаемого значения:
-
put(rule, **options) -
Сокращение для
route()сmethods=["PUT"].Изменения
Добавлен в версии 2.0.
-
redirect(location, code=302) -
Создать объект ответа перенаправления.
Вызывается функцией
flask.redirect(), а также может вызываться напрямую.- Параметры:
- Тип возвращаемого значения:
Изменения
Добавлен в версии 2.2: Перемещён из
flask.redirect, которая вызывает этот метод.
-
register_blueprint(blueprint, **options) -
Регистрирует
Blueprintв приложении. Значения по умолчанию, заданные в шаблоне, будут переопределены аргументами, переданными в этот метод.Вызывает метод
register()шаблона после записи шаблона в список шаблонов приложенияblueprints.- Параметры:
-
- blueprint (Blueprint) – Шаблон для регистрации.
- url_prefix – Маршруты шаблона будут иметь этот префикс.
- subdomain – Маршруты шаблона будут соответствовать этому поддомену.
- url_defaults – Маршруты шаблона будут использовать эти значения по умолчанию для аргументов представлений.
-
options (t.Any) – Дополнительные ключевые аргументы передаются в
BlueprintSetupState. Они доступны в вызовах обратного вызоваrecord().
- Тип возвращаемого значения:
-
None
Изменения
Изменено в версии 2.0.1: Опция
nameможет использоваться для изменения имени (с префиксом) шаблона, с которым он регистрируется. Это позволяет регистрировать один и тот же шаблон несколько раз с уникальными именами дляurl_for.Добавлен в версии 0.7.
-
register_error_handler(code_or_exception, f) -
Альтернативная функция присоединения обработчика ошибок к декоратору
errorhandler(), которая более удобна для использования без декоратора.Изменения
Добавлен в версии 0.7.
-
request_class -
псевдоним для
Request
-
request_context(environ) -
Создаёт
RequestContext, представляющий WSGI-среду. Используйтеwithблок для помещения контекста, чтобыrequestуказывал на этот запрос.См. Контекст запроса.
Как правило, вы не должны вызывать это из своего кода. Контекст запроса автоматически помещается в
wsgi_app()при обработке запроса. Используйтеtest_request_context()для создания среды и контекста вместо этого метода.- Параметры:
-
environ (dict) – WSGI-среда
- Тип возвращаемого значения:
-
response_class -
псевдоним для
Response
-
root_path -
Абсолютный путь к пакету в файловой системе. Используется для поиска ресурсов, содержащихся в пакете.
-
-
route(rule, **options) -
Декорирует функцию представления для её регистрации с заданным правилом URL и параметрами. Вызывает
add_url_rule(), которая содержит более подробную информацию о реализации.@app.route("/") def index(): return "Hello, World!"Имя конечной точки для маршрута по умолчанию соответствует имени функции представления, если параметр
endpointне передан.Параметр
methodsпо умолчанию["GET"].HEADиOPTIONSдобавляются автоматически.
-
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без отладочного режима не поймает какие-либо исключения, так как их не будет.- Параметры:
-
-
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) – имя хоста для прослушивания. Установите это значение в
- Тип возвращаемого значения:
-
None
Журнал изменений
Изменено в версии 1.0: Если установлено, python-dotenv будет использоваться для загрузки переменных окружения из файлов
.envи.flaskenv.Переменная окружения
FLASK_DEBUGпереопределитdebug.Режим потоков включён по умолчанию.
Изменено в версии 0.10: Порт по умолчанию теперь выбирается из переменной
SERVER_NAME.
-
secret_key -
Если секретный ключ установлен, криптографические компоненты могут использовать его для подписи файлов cookie и других вещей. Установите его в сложное случайное значение, когда вы хотите использовать безопасное cookie, например.
Этот атрибут также может быть сконфигурирован из конфигурации с ключом конфигурации
SECRET_KEY. По умолчаниюNone.
-
select_jinja_autoescape(filename) -
Возвращает
Trueесли автоматическая экранировка должна быть активна для заданного имени шаблона. Если имя шаблона не указано, возвращаетTrue.Журнал изменений
Изменено в версии 2.2: Автоэкранировка теперь включена по умолчанию для файлов
.svg.Добавлено в версии 0.5.
-
send_static_file(filename) -
Функция представления, используемая для обслуживания файлов из
static_folder. Маршрут автоматически регистрируется для этого представления по адресуstatic_url_path, еслиstatic_folderустановлен.Журнал изменений
Добавлено в версии 0.5.
-
session_interface: SessionInterface = <flask.sessions.SecureCookieSessionInterface object> -
интерфейс сеанса для использования. По умолчанию используется экземпляр
SecureCookieSessionInterface.Журнал изменений
Добавлено в версии 0.8.
-
shell_context_processor(f) -
Регистрирует функцию обработчика контекста оболочки.
Журнал изменений
Добавлено в версии 0.11.
- Параметры:
-
f (T_shell_context_processor) –
- Тип возвращаемого значения:
-
T_shell_context_processor
-
shell_context_processors: list[ft.ShellContextProcessorCallable] -
Список функций обработчиков контекста оболочки, которые должны быть выполнены при создании контекста оболочки.
Журнал изменений
Добавлено в версии 0.11.
-
-
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_appcontext_funcs: list[ft.TeardownCallable] -
Список функций, которые вызываются при уничтожении контекста приложения. Поскольку контекст приложения также разрушается, если запрос завершается, это место для хранения кода, который отключается от баз данных.
Журнал изменений
Новая версия 0.9.
-
teardown_request(f) -
Регистрирует функцию, которая вызывается при извлечении контекста запроса. Обычно это происходит в конце каждого запроса, но контексты могут также добавляться вручную во время тестирования.
with app.test_request_context(): ...Когда блок
withзавершается (или вызываетсяctx.pop()), функции завершения вызываются непосредственно перед тем, как контекст запроса становится неактивным.Если функция завершения была вызвана из-за необработанной ошибки, ей будет передан объект ошибки. Если зарегистрирован
errorhandler(), он обработает исключение, и функция завершения его не получит.Функции завершения не должны вызывать исключения. Если они выполняют код, который может завершиться ошибкой, они должны заключить этот код в блок
try/exceptи регистрировать любые ошибки.Значения возврата функций завершения игнорируются.
Это доступно как для объектов приложения, так и для объектов blueprints. При использовании с приложением, это выполняется после каждого запроса. При использовании с blueprint, это выполняется после каждого запроса, который обрабатывает blueprint. Для регистрации с blueprint и выполнения после каждого запроса используйте
Blueprint.teardown_app_request().- Параметры:
-
f (T_teardown) –
- Тип возвращаемого значения:
-
T_teardown
-
teardown_request_funcs: dict[ft.AppOrBlueprintKey, list[ft.TeardownCallable]] -
Структура данных функций, которые вызываются в конце каждого запроса, даже если возникло исключение, в формате
{scope: [functions]}. Ключscope— имя blueprint, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
teardown_request().Эта структура данных является внутренней. Ее не следует изменять напрямую, и ее формат может измениться в любое время.
-
template_context_processors: dict[ft.AppOrBlueprintKey, list[ft.TemplateContextProcessorCallable]] -
Структура данных функций, которые вызываются для передачи дополнительных значений контекста при рендеринге шаблонов, в формате
{scope: [functions]}. Ключscope— имя blueprint, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
context_processor().Эта структура данных является внутренней. Ее не следует изменять напрямую, и ее формат может измениться в любое время.
-
template_filter(name=None) -
Декоратор, используемый для регистрации пользовательских фильтров шаблонов. Можно указать имя фильтра, в противном случае используется имя функции. Пример:
@app.template_filter() def reverse(s): return s[::-1]
-
template_folder -
Путь к папке с шаблонами, относительно
root_path, для добавления в загрузчик шаблонов.Noneесли шаблоны не должны быть добавлены.
-
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(**kwargs) -
Создайте исполняемую среду командной строки для тестирования команд командной строки. См. Запуск команд с помощью исполняемой среды командной строки.
Возвращает экземпляр
test_cli_runner_class, по умолчаниюFlaskCliRunner. Объект приложения Flask передаётся в качестве первого аргумента.Изменения
Введено в версии 1.0.
- Параметры:
-
kwargs (t.Any) –
- Тип возвращаемого значения:
-
test_cli_runner_class: type[FlaskCliRunner] | None = None -
Подкласс
CliRunner, по умолчаниюFlaskCliRunner, который используетсяtest_cli_runner(). Его метод__init__должен принимать объект приложения Flask в качестве первого аргумента.Изменения
Введено в версии 1.0.
-
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для клиента.- Параметры:
-
- use_cookies (bool) –
- kwargs (t.Any) –
- Тип возвращаемого значения:
-
test_client_class: type[FlaskClient] | None = None -
Метод
test_client()создаёт экземпляр этого класса тестового клиента. По умолчаниюFlaskClient.Изменения
Введено в версии 0.7.
-
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.
- Тип возвращаемого значения:
-
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-исключений.Changelog
Изменено в версии 1.0: Ошибки запроса с ошибками не перехватываются по умолчанию в режиме отладки.
Добавлено в версии 0.8.
- Параметры:
-
e (Исключение) –
- Тип возвращаемого значения:
-
update_template_context(context) -
Обновляет контекст шаблона некоторыми часто используемыми переменными. Это вставляет request, session, config и g в контекст шаблона, а также всё, что процессоры контекста шаблона хотят вставить. Обратите внимание, что значения в исходном контексте не будут перезаписаны, если процессор контекста решит вернуть значение с тем же ключом, начиная с Flask 0.6.
- Параметры:
-
context (словарь) – контекст в виде словаря, который обновляется на месте для добавления дополнительных переменных.
- Тип возвращаемого значения:
-
None
-
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.Changelog
Добавлено в версии 0.9.
-
url_default_functions: dict[ft.AppOrBlueprintKey, list[ft.URLDefaultCallable]] -
Структура данных функций для изменения ключевых аргументов при генерации URL-адресов, в формате
{scope: [functions]}. Ключscope— имя blueprint, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
url_defaults().Эта структура данных внутренняя. Не следует изменять её напрямую, и её формат может изменяться в любое время.
-
url_defaults(f) -
Функция обратного вызова для значений по умолчанию URL для всех функций представления приложения. Она вызывается с именем конечной точки и значениями и должна обновить переданные значения на месте.
Доступно как для объектов app, так и для blueprint. При использовании с app, она вызывается для каждого запроса. При использовании с blueprint, она вызывается для запросов, которые обрабатывает blueprint. Чтобы зарегистрировать с blueprint и повлиять на каждый запрос, используйте
Blueprint.app_url_defaults().- Параметры:
-
f (T_url_defaults) –
- Тип возвращаемого значения:
-
T_url_defaults
-
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.Если построение завершится неудачно по какой-либо причине, например, неизвестной конечной точкой или неверными значениями, вызывается метод приложения
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) или требовать внешний (True). Внешние URL включают схему и домен. Когда не в активном запросе, URL по умолчанию внешние.
-
values (любой тип) – Значения для использования в переменных частях правила URL. Неизвестные ключи добавляются как параметры запроса, как
?a=b&c=d.
-
endpoint (str) – Имя конечной точки, связанной с генерируемым URL. Если это начинается с
- Тип возвращаемого значения:
Changelog
Добавлено в версии 2.2: Перемещено из
flask.url_for, который вызывает этот метод.
-
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
-
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
-
url_value_preprocessors: dict[ft.AppOrBlueprintKey, list[ft.URLValuePreprocessorCallable]] -
Структура данных для вызова функций, изменяющих ключевые аргументы, передаваемые функции представления, в формате
{scope: [functions]}. Ключscope— имя шаблона, для которого функции активны, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
url_value_preprocessor().Эта структура данных является внутренней. Она не должна изменяться напрямую, и её формат может измениться в любое время.
-
view_functions: dict[str, t.Callable] -
Словарь, сопоставляющий имена конечных точек с функциями представлений.
Для регистрации функции представления используйте декоратор
route().Эта структура данных является внутренней. Она не должна изменяться напрямую, и её формат может измениться в любое время.
-
wsgi_app(environ, start_response) -
Фактическое приложение WSGI. Это не реализовано в
__call__()для того, чтобы можно было применять мидлвары, не теряя ссылку на объект приложения. Вместо этого:app = MyMiddleware(app)
Лучше сделать так:
app.wsgi_app = MyMiddleware(app.wsgi_app)
Тогда у вас по-прежнему есть исходный объект приложения, и вы можете продолжать вызывать методы на нём.
Журнал изменений
Изменено в версии 0.7: События завершения для контекстов запроса и приложения вызываются даже в случае возникновения необработанной ошибки. Другие события могут не вызываться, в зависимости от того, когда во время обработки возникнет ошибка. См. Обработчики событий и ошибки.
-
Объекты Blueprint
-
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=<object object>) -
Представляет собой blueprint, набор маршрутов и других функций, связанных с приложением, которые могут быть зарегистрированы в реальном приложении позже.
Blueprint — это объект, позволяющий определять функции приложения без предварительного указания объекта приложения. Он использует те же декораторы, что и
Flask, но откладывает необходимость приложения, записывая их для последующей регистрации.Декорирование функции с помощью blueprint создаёт отложенную функцию, которая вызывается с
BlueprintSetupStateпри регистрации blueprint в приложении.См. Модульные приложения с помощью Blueprint для получения дополнительной информации.
- Параметры:
-
- name (str) – Имя blueprint. Будет добавлено в префикс каждого имени конечной точки.
-
import_name (str) – Имя пакета blueprint, обычно
__name__. Это помогает найтиroot_pathдля blueprint. - static_folder (str | os.PathLike | None) – Папка со статическими файлами, которые должны обслуживаться статическим маршрутом blueprint. Путь является относительным к корневому пути blueprint. Статические файлы blueprint по умолчанию отключены.
-
static_url_path (str | None) – URL для предоставления статических файлов. По умолчанию
static_folder. Если у blueprint нетurl_prefix, статический маршрут приложения будет иметь приоритет, и статические файлы blueprint будут недоступны. - template_folder (str | os.PathLike | None) – Папка с шаблонами, которые должны быть добавлены в путь поиска шаблонов приложения. Путь является относительным к корневому пути blueprint. Шаблоны blueprint по умолчанию отключены. Шаблоны blueprint имеют более низкий приоритет, чем шаблоны в папке шаблонов приложения.
- url_prefix (str | None) – Путь, который добавляется в префикс всех URL blueprint, чтобы сделать их отличными от других маршрутов приложения.
- subdomain (str | None) – Поддомен, с которым маршруты blueprint будут сопоставляться по умолчанию.
- url_defaults (dict | None) – Словарь значений по умолчанию, которые маршруты blueprint будут получать по умолчанию.
-
root_path (str | None) – По умолчанию blueprint автоматически устанавливает это значение на основе
import_name. В некоторых ситуациях автоматическое определение может не сработать, поэтому путь можно указать вручную. - cli_group (str | None) –
Изменения
Изменено в версии 1.1.0: У blueprint есть группа
cliдля регистрации вложенных команд CLI. Параметрcli_groupуправляет именем группы внутри командыflask.Добавлена в версии 0.7.
-
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 с помощью blueprint. См.
Flask.add_url_rule()для получения полной документации.Правило URL имеет префикс, заданный префиксом URL blueprint. Имя конечной точки, используемое с
url_for(), имеет префикс, заданный именем blueprint.
-
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
-
after_request_funcs: dict[ft.AppOrBlueprintKey, list[ft.AfterRequestCallable]] -
Структура данных функций, которые вызываются в конце каждого запроса, в формате
{scope: [functions]}. Ключscope— это имя модуля, для которого функции активны, илиNoneдля всех запросов.Чтобы зарегистрировать функцию, используйте декоратор
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().Changelog
Новое в версии 0.10.
-
app_template_test(name=None) -
Регистрирует тест шаблона, доступный в любом шаблоне, рендер которого выполняет приложение. Эквивалентно
Flask.template_test().Changelog
Новое в версии 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
-
before_request_funcs: dict[ft.AppOrBlueprintKey, list[ft.BeforeRequestCallable]] -
Структура данных функций, вызываемых в начале каждого запроса, в формате
{scope: [functions]}. Ключscope— имя шаблона, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
before_request().Эта структура данных является внутренней. Её не следует изменять напрямую, и её формат может меняться в любое время.
-
cli -
Группа команд Click для регистрации команд CLI для этого объекта. Команды доступны из команды
flaskпосле обнаружения приложения и регистрации шаблонов.
-
context_processor(f) -
Регистрирует функцию обработчика контекста шаблона. Эти функции выполняются перед рендерингом шаблона. Ключи возвращаемого словаря добавляются как переменные, доступные в шаблоне.
Это доступно как для объектов приложения, так и для объектов шаблонов. При использовании на объекте приложения, это вызывается для каждого рендерящегося шаблона. При использовании на объекте шаблона, это вызывается для шаблонов, рендерящихся из представлений шаблона. Для регистрации с шаблоном и воздействия на каждый шаблон, используйте
Blueprint.app_context_processor().- Параметры:
-
f (T_template_context_processor) –
- Тип возвращаемого значения:
-
T_template_context_processor
-
delete(rule, **options) -
Сокращение для
route()сmethods=["DELETE"].Изменения
Введено в версии 2.0.
-
endpoint(endpoint) -
Декорировать функцию представления для регистрации её для заданного конечной точки. Используется, если правило добавлено без
view_funcсadd_url_rule().app.add_url_rule("/ex", endpoint="example") @app.endpoint("example") def example(): ...
-
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().Эта структура данных является внутренней. Её не следует изменять напрямую, и её формат может меняться в любое время.
-
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().Изменения
Новое в версии 0.7: Используйте
register_error_handler()вместо непосредственного измененияerror_handler_specдля обработчиков ошибок на уровне всего приложения.Новое в версии 0.7: Теперь можно дополнительно зарегистрировать пользовательские типы исключений, которые необязательно должны быть подклассом класса
HTTPException.
-
-
get_send_file_max_age(filename) -
Используется
send_file()для определения значения кэшаmax_ageдля заданного пути к файлу, если оно не было передано.По умолчанию, это возвращает
SEND_FILE_MAX_AGE_DEFAULTиз конфигурацииcurrent_app. По умолчанию этоNone, что сообщает браузеру использовать условные запросы вместо кэша с тайм-аутом, что обычно предпочтительнее.Журнал изменений
Изменено в версии 2.0: Значение конфигурации по умолчанию —
Noneвместо 12 часов.Добавлена в версии 0.9.
-
property has_static_folder: bool -
Trueеслиstatic_folderзадано.Журнал изменений
Добавлена в версии 0.5.
-
import_name -
Имя пакета или модуля, к которому относится этот объект. Не изменяйте его после того, как оно было задано конструктором.
-
property jinja_loader: FileSystemLoader | None -
Загрузчик Jinja для шаблонов этого объекта. По умолчанию это класс
jinja2.loaders.FileSystemLoaderдляtemplate_folder, если он задан.Журнал изменений
Добавлена в версии 0.5.
-
make_setup_state(app, options, first_registration=False) -
Создаёт экземпляр объекта
BlueprintSetupState(), который позже передаётся в функции обратного вызова регистрации. Подклассы могут переопределить этот метод, чтобы вернуть подкласс состояния установки.- Параметры:
- Тип возвращаемого значения:
-
open_resource(resource, mode='rb') -
Открывает файл ресурса, относительный к
root_path, для чтения.Например, если файл
schema.sqlнаходится рядом с файломapp.py, где определёнFlaskapplication, его можно открыть так:with app.open_resource("schema.sql") as f: conn.executescript(f.read())
-
patch(rule, **options) -
Сокращённая запись для
route()сmethods=["PATCH"].Журнал изменений
Добавлена в версии 2.0.
-
post(rule, **options) -
Сокращённая запись для
route()сmethods=["POST"].Журнал изменений
Добавлена в версии 2.0.
-
put(rule, **options) -
Сокращённая запись для
route()сmethods=["PUT"].Журнал изменений
Добавлена в версии 2.0.
-
record(func) -
Регистрирует функцию, которая вызывается при регистрации blueprint в приложении. Эта функция вызывается с аргументом состояния, возвращённым методом
make_setup_state().- Параметры:
-
func (Callable) –
- Тип возвращаемого значения:
-
None
-
-
register(app, options) -
Вызывается
Flask.register_blueprint()для регистрации всех представлений и обратных вызовов, зарегистрированных в модуле, в приложении. СоздаётBlueprintSetupStateи вызывает каждый обратный вызовrecord()с ним.- Параметры:
-
- app (Flask) – Приложение, с которым регистрируется этот модуль.
-
options (dict) – Аргументы ключевых слов, переданные от
register_blueprint().
- Тип возвращаемого значения:
-
None
Изменено в версии 2.3: Вложенные модули теперь корректно применяют поддомены.
Изменения
Изменено в версии 2.1: Регистрация одного и того же модуля с тем же именем несколько раз является ошибкой.
Изменено в версии 2.0.1: Вложенные модули регистрируются с их имён с точкой. Это позволяет различным модулям с одинаковым именем быть вложенными в разных местах.
Изменено в версии 2.0.1: Опция
nameможет быть использована для изменения имени модуля (до точки), с которым он регистрируется. Это позволяет регистрировать один и тот же модуль несколько раз с уникальными именами дляurl_for.
-
register_blueprint(blueprint, **options) -
Регистрирует
Blueprintв этом модуле. Аргументы ключевых слов, переданные в этот метод, переопределят значения по умолчанию, установленные в модуле.Изменения
Изменено в версии 2.0.1: Опция
nameможет быть использована для изменения имени модуля (до точки), с которым он регистрируется. Это позволяет регистрировать один и тот же модуль несколько раз с уникальными именами дляurl_for.Добавлено в версии 2.0.
-
register_error_handler(code_or_exception, f) -
Альтернативная функция присоединения обработчика ошибок к декоратору
errorhandler(), которая проще в использовании для не-декоративных случаев.Изменения
Добавлено в версии 0.7.
- Параметры:
-
- code_or_exception (type[Исключение] | int) –
- f (ft.ErrorHandlerCallable) –
- Тип возвращаемого значения:
-
None
-
root_path -
Абсолютный путь к пакету в файловой системе. Используется для поиска ресурсов, содержащихся в пакете.
-
route(rule, **options) -
Декорирует функцию представления для регистрации её с заданным правилом URL и параметрами. Вызывает
add_url_rule(), в котором содержится более подробная информация об реализации.@app.route("/") def index(): return "Hello, World!"Имя конечной точки маршрута по умолчанию равно имени функции представления, если параметр
endpointне передан.Параметр
methodsпо умолчанию равен["GET"].HEADиOPTIONSдобавляются автоматически.
-
send_static_file(filename) -
Функция представления, используемая для обслуживания файлов из
static_folder. Маршрут автоматически регистрируется для этого представления по адресуstatic_url_path, еслиstatic_folderустановлен.Изменения
Добавлено в версии 0.5.
-
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.teardown_app_request().- Параметры:
-
f (T_teardown) –
- Тип возвращаемого значения:
-
T_teardown
-
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().Эта структура данных внутренняя. Ее не следует изменять напрямую, и ее формат может измениться в любое время.
-
template_folder -
Путь к папке шаблонов, относительно
root_path, для добавления в загрузчик шаблонов.Noneесли шаблоны не должны добавляться.
-
url_default_functions: dict[ft.AppOrBlueprintKey, list[ft.URLDefaultCallable]] -
Структура данных функций, которые вызываются для изменения ключевых аргументов при генерации URL-адресов, в формате
{scope: [functions]}. Ключscope— имя схемы, для которой активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
url_defaults().Эта структура данных внутренняя. Ее не следует изменять напрямую, и ее формат может измениться в любое время.
-
url_defaults(f) -
Функция обратного вызова для значений по умолчанию URL для всех функций представления приложения. Она вызывается с именем конечной точки и значениями и должна обновлять переданные значения на месте.
Это доступно как для объектов приложения, так и для объектов схемы. При использовании с приложением, эта функция вызывается для каждого запроса. При использовании со схемой, эта функция вызывается для запросов, обрабатываемых схемой. Для регистрации со схемой и воздействия на каждый запрос, используйте
Blueprint.app_url_defaults().- Параметры:
-
f (T_url_defaults) –
- Тип возвращаемого значения:
-
T_url_defaults
-
url_value_preprocessor(f) -
Зарегистрировать функцию предварительной обработки значений URL для всех функций представления в приложении. Эти функции будут вызываться до функций
before_request().Функция может изменять значения, полученные из сопоставленного URL, прежде чем они будут переданы представлению. Например, это можно использовать для извлечения общего кода языка и размещения его в
gвместо передачи его каждому представлению.Функция получает имя конечной точки и словарь значений. Значение возврата игнорируется.
Это доступно как для объектов приложения, так и для объектов схемы. При использовании с приложением, эта функция вызывается для каждого запроса. При использовании со схемой, эта функция вызывается для запросов, обрабатываемых схемой. Для регистрации со схемой и воздействия на каждый запрос, используйте
Blueprint.app_url_value_preprocessor().- Параметры:
-
f (T_url_value_preprocessor) –
- Тип возвращаемого значения:
-
T_url_value_preprocessor
-
url_value_preprocessors: dict[ft.AppOrBlueprintKey, list[ft.URLValuePreprocessorCallable]] -
Структура данных функций, которые вызываются для изменения ключевых аргументов, передаваемых функции представления, в формате
{scope: [functions]}. Ключscope— имя схемы, для которой активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
url_value_preprocessor().Эта структура данных внутренняя. Ее не следует изменять напрямую, и ее формат может измениться в любое время.
-
view_functions: dict[str, t.Callable] -
Словарь, отображающий имена конечных точек на функции представления.
Для регистрации функции представления используйте декоратор
route().Эта структура данных внутренняя. Ее не следует изменять напрямую, и ее формат может измениться в любое время.
-
Данные входящего запроса
-
class flask.Request(environ, populate_request=True, shallow=False) -
Объект запроса, используемый по умолчанию в Flask. Сохраняет сопоставленный конечный пункт и аргументы представления.
Он и является тем, что в итоге становится
request. Если вы хотите заменить используемый объект запроса, вы можете создать подкласс и установитьrequest_classна ваш подкласс.Объект запроса является подклассом
Requestи предоставляет все атрибуты, определённые Werkzeug, плюс несколько специфичных для Flask.-
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] -
Если существует заголовок переадресации, это список всех 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 blueprint: str | None -
Зарегистрированное имя текущего шаблона.
Будет
Noneесли конечный пункт не принадлежит шаблону, или если сопоставление URL не удалось или ещё не выполнено.Это не обязательно совпадает с именем, с которым шаблон был создан. Он может быть вложен или зарегистрирован с другим именем.
-
property blueprints: list[str] -
Зарегистрированные имена текущего шаблона и вышестоящих родительских шаблонов.
Будет пустым списком, если нет текущего шаблона или если сопоставление URL не удалось.
Журнал изменений
Введено в версии 2.0.1.
-
property cache_control: RequestCacheControl -
Объект
RequestCacheControlдля входящих заголовков управления кэшем.
-
property charset: str -
Кодировка символов, используемая для декодирования данных тела, формы и cookie. По умолчанию UTF-8.
Устарело начиная с версии 2.3: Будет удалено в Werkzeug 3.0. Данные запроса всегда должны быть UTF-8.
-
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 encoding_errors: str -
Обработка ошибок при декодировании байтов. По умолчанию «replace».
Устарело начиная с версии 2.3: Будет удалено в Werkzeug 3.0.
-
property endpoint: str | None -
Точка входа, соответствующая URL запроса.
Будет
Noneв случае неудачи сопоставления или если оно еще не выполнено.В сочетании с
view_argsможно использовать для восстановления того же URL или изменённого URL.
-
environ: WSGIEnvironment -
WSGI-среда, содержащая HTTP-заголовки и информацию от WSGI-сервера.
-
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), который позволяет создавать запросы multipart, поддерживать куки и т.д.Принимает те же опции, что и
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, если тип контента неверный.
-
headers -
Заголовки, полученные с запросом.
-
property host: str -
Имя хоста, к которому был отправлен запрос, включая порт, если он нестандартный. Проверяется с помощью
trusted_hosts.
-
property host_url: str -
Схема и хост URL запроса.
-
property if_match: ETags -
Объект, содержащий все ETag в заголовке
If-Match.- Тип возвращаемого значения:
-
property if_modified_since: datetime | None -
Разбор заголовка
If-Modified-Sinceкак объекта datetime.Изменения
Изменено в версии 2.0: Объект datetime с часовым поясом.
-
property if_none_match: ETags -
Объект, содержащий все ETag в заголовке
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 Неподдерживаемый тип медиа.Изменено в версии 2.3: Вызывать ошибку 415 вместо 400.
Изменения
Изменено в версии 2.1: Вызывать ошибку 400, если тип контента неверный.
-
list_storage_class -
Псевдоним для
ImmutableList
-
make_form_data_parser() -
Создаёт парсер данных формы. Инициализирует
form_data_parser_classс некоторыми параметрами.Изменения
Добавлена в версии 0.8.
- Тип возвращаемого значения:
-
property max_content_length: int | None -
Только для чтения представление ключа конфигурации
MAX_CONTENT_LENGTH.
-
max_form_memory_size: int | None = None -
Максимальный размер поля формы. Передаётся функции разбора данных формы (
parse_form_data()). При установлении и обращении к атрибутуformилиfiles, если размер данных в памяти для данных POST превышает указанное значение, поднимается исключениеRequestEntityTooLarge.Изменения
Добавлена в версии 0.5.
-
max_form_parts = 1000 -
Максимальное количество частей multipart для разбора, передаваемое в
form_data_parser_class. Разбор данных формы с большим количеством частей приведёт к исключениюRequestEntityTooLarge.Изменения
Добавлена в версии 2.2.3.
-
-
max_forwards -
Поле заголовка запроса Max-Forwards предоставляет механизм для методов TRACE и OPTIONS, чтобы ограничить количество прокси-серверов или шлюзов, которые могут пересылать запрос следующему входящему серверу.
-
method -
Метод, с помощью которого был отправлен запрос, например
GET.
-
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'}.
-
on_json_loading_failed(e) -
Вызывается, если
get_json()завершается с ошибкой и не отменяется.Если этот метод возвращает значение, оно используется в качестве возвращаемого значения для
get_json(). По умолчанию реализация вызываетBadRequest.- Parameters:
-
e (ValueError | None) – Если произошла ошибка при разборе, это исключение. Оно будет
None, если тип содержимого не былapplication/json. - Return type:
Изменено в версии 2.3: Вызывать ошибку 415 вместо 400.
-
origin -
Хост, с которого исходит запрос. Установите
access_control_allow_originв ответе, чтобы указать разрешенные источники.
-
parameter_storage_class -
Псевдоним
ImmutableMultiDict
-
path -
Часть пути URL после
root_path. Это путь, используемый для маршрутизации внутри приложения.
-
property pragma: HeaderSet -
Поле заголовка общего назначения Pragma используется для включения реализуемых директив, которые могут применяться к любому получателю в цепочке запрос/ответ. Все директивы pragma указывают на необязательное поведение с точки зрения протокола; однако некоторые системы могут потребовать, чтобы поведение соответствовало этим директивам.
-
query_string -
Часть URL после «?». Это значение в сыром виде, используйте
argsдля обработанных значений.
-
property range: Range | None -
Обработанный заголовок
Range.Changelog
Добавлен в версии 0.7.
- Return type:
-
referrer -
Поле заголовка запроса Referer позволяет клиенту указать серверу адрес (URI) ресурса, из которого был получен запрашиваемый URI (ссылки, хотя поле заголовка написано некорректно).
-
remote_addr -
Адрес клиента, отправляющего запрос.
-
remote_user -
Если сервер поддерживает аутентификацию пользователя и скрипт защищен, это атрибут содержит имя пользователя, под которым пользователь прошел аутентификацию.
-
root_path -
Префикс, под которым установлено приложение, без заключительного слэша.
pathследует за ним.
-
property root_url: str -
Схема, хост и корневой путь URL запроса. Это корень, с которого доступно приложение.
-
routing_exception: Exception | None = None -
Если совпадение с URL не удалось, это исключение, которое будет возбуждено/было возбуждено в рамках обработки запроса. Обычно это исключение
NotFoundили подобное.
-
scheme -
Схема URL протокола, используемого запросом, например
httpsилиwss.
-
property script_root: str -
Псевдоним для
self.root_path.environ["SCRIPT_ROOT"]без заключительного слэша.
-
server -
Адрес сервера.
(host, port),(path, None)для сокетов Unix илиNone, если неизвестно.
-
shallow: bool -
Устанавливается при создании объекта запроса. Если
True, чтение из тела запроса вызоветRuntimeException. Полезно для предотвращения изменения потока из промежуточного ПО.
-
property stream: IO[bytes] -
Поток ввода WSGI с проверками безопасности. Этот поток может быть использован только один раз.
Используйте
get_data()для получения полного данных в виде байтов или текста. Атрибутdataбудет содержать полные байты только в том случае, если они не представляют данные формы. Атрибутformв этом случае будет содержать обработанные данные формы.В отличие от
input_stream, этот поток защищает от бесконечных потоков или чтения послеcontent_lengthилиmax_content_length.Если
max_content_lengthзадан, он может быть применен к потокам, еслиwsgi.input_terminatedзадан. В противном случае возвращается пустой поток.Если предел достигнут до того, как исходный поток будет исчерпан (например, файл слишком большой или бесконечный поток), остальное содержимое потока не может быть безопасно считано. В зависимости от того, как сервер обрабатывает это, клиенты могут показать ошибку «сброс соединения» вместо отображения ответа 413.
Изменено в версии 2.3: Проверять
max_content_lengthпредварительно и во время чтения.Changelog
Изменено в версии 0.9: Поток всегда задан (но может быть использован), даже если сначала был обращен к обработке формы.
-
trusted_hosts: list[str] | None = None -
Действительные имена хостов при обработке запросов. По умолчанию все хосты являются доверенными, что означает, что хост, указанный клиентом, будет принят.
Поскольку заголовки
HostиX-Forwarded-Hostмогут быть установлены клиентом-злоумышленником на любое значение, рекомендуется либо установить этот атрибут, либо реализовать аналогичную проверку на прокси-сервере (если приложение работает за ним).Changelog
Добавлен в версии 0.9.
-
property url: str -
Полный URL запроса со схемой, хостом, корневым путем, путем и строкой запроса.
-
-
property url_charset: str -
Кодировка, используемая для декодирования процентов кодированных байтов в
args. По умолчанию используется значениеcharset, которое по умолчанию равно UTF-8.Устаревшее с версии 2.3: Будет удалено в Werkzeug 3.0. Проценты кодированные байты всегда должны быть UTF-8.
Журнал изменений
Новое в версии 0.6.
-
property url_root: str -
Псевдоним для
root_url. URL со схемой, хостом и корневым путем. Например,https://example.com/app/.
-
url_rule: Rule | None = None -
Внутреннее правило URL, которое сопоставилось с запросом. Это может быть полезно для проверки разрешенных методов для URL из обработчика before/after (
request.url_rule.methods) и т. д. Однако, если метод запроса был недействительным для правила URL, список допустимых методов доступен вrouting_exception.valid_methodsвместо этого (атрибут исключения WerkzeugMethodNotAllowed), так как запрос никогда не был внутренне связан.Журнал изменений
Новое в версии 0.6.
-
property user_agent: UserAgent -
Пользовательский агент. Используйте
user_agent.stringдля получения значения заголовка. Установитеuser_agent_classв подклассUserAgentдля обеспечения обработки других свойств или расширенных данных.Журнал изменений
Изменено в версии 2.1: Встроенный анализатор был удален. Установите
user_agent_classв подклассUserAgentдля анализа данных из строки.
-
user_agent_class -
Псевдоним
UserAgent
-
property values: CombinedMultiDict[str, str] -
werkzeug.datastructures.CombinedMultiDict, объединяющаяargsиform.Для GET-запросов присутствуют только
args, а неform.Журнал изменений
Изменено в версии 2.0: Для GET-запросов присутствуют только
args, а неform.
-
view_args: dict[str, t.Any] | None = None -
Словарь аргументов представления, соответствующих запросу. Если при сопоставлении произошла ошибка, это будет
None.
-
property want_form_data_parsed: bool -
Trueесли метод запроса несёт данные. По умолчанию это истинно, если отправленContent-Type.Журнал изменений
Новое в версии 0.8.
-
-
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.- Параметры:
-
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) -
Добавить etag для текущего ответа, если его еще нет.
Журнал изменений
Изменено в версии 2.0: Для генерации значения используется SHA-1. MD5 может быть недоступен в некоторых средах.
-
age -
Поле ответа Age указывает оценку отправителем времени, прошедшего с момента создания ответа (или его перепроверки) на исходном сервере.
Значения Age — это неотрицательные десятичные целые числа, представляющие время в секундах.
-
property allow: HeaderSet -
Поле заголовка сущности Allow перечисляет набор методов, поддерживаемых ресурсом, идентифицированным запрошенным URI. Цель этого поля — информировать получателя о допустимых методах, связанных с ресурсом. Заголовок Allow ОБЯЗАТЕЛЬНО должен присутствовать в ответе 405 (Метод не поддерживается).
-
autocorrect_location_header = False -
Если заголовок перенаправления
Location— это относительный URL, преобразуйте его в абсолютный URL, включая схему и домен.Журнал изменений
Изменено в версии 2.1: По умолчанию отключено, поэтому ответы будут отправлять относительные перенаправления.
Новое в версии 0.8.
-
automatically_set_content_length = True -
Должен ли этот объект ответа автоматически задавать заголовок content-length, если это возможно? По умолчанию это true.
Журнал изменений
Новое в версии 0.8.
-
property cache_control: ResponseCacheControl -
Поле общего заголовка Cache-Control используется для указания директив, которые ДОЛЖНЫ выполняться всеми механизмами кэширования по цепочке запроса/ответа.
-
calculate_content_length() -
Возвращает длину содержимого, если она доступна, или
Noneв противном случае.- Тип возвращаемого значения:
-
int | None
-
call_on_close(func) -
Добавляет функцию в внутренний список функций, которые должны вызываться при закрытии ответа. С версии 0.7 эта функция также возвращает переданную функцию, что позволяет использовать ее как декоратор.
Журнал изменений
Новое в версии 0.6.
-
property charset: str -
Кодировка символов, используемая для кодирования данных тела и cookie. По умолчанию UTF-8.
Устарело начиная с версии 2.3: Будет удалено в Werkzeug 3.0. Данные ответа всегда должны быть UTF-8.
-
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_mimetype: str | None = 'text/html' -
Значение по умолчанию для mimetype, если оно не предоставлено.
-
default_status = 200 -
Значение по умолчанию для статуса, если оно не предоставлено.
-
delete_cookie(key, path='/', domain=None, secure=False, httponly=False, samesite=None) -
Удаляет cookie. Возвращает без ошибок, если ключ не существует.
- Параметры:
-
- key (str) – ключ (имя) cookie для удаления.
- path (str | None) – если cookie ограничена путём, путь должен быть определён здесь.
- domain (str | None) – если cookie ограничена доменом, этот домен должен быть определён здесь.
-
secure (bool) – Если
True, cookie будет доступна только через HTTPS. - httponly (bool) – Запретить доступ к cookie через JavaScript.
- samesite (str | None) – Ограничить область действия cookie только запросами «с того же сайта».
- Тип возвращаемого значения:
-
None
-
direct_passthrough -
Передать тело ответа напрямую как WSGI-итератор. Это может быть полезно, когда тело является двоичным файлом или другим итератором байтов, чтобы пропустить некоторые ненужные проверки. Используйте
send_file()вместо ручного задания этого параметра.
-
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() -
Подготавливает объект ответа для сериализации с помощью pickle. Выполняет следующие действия:
- Буферизует ответ в список, игнорируя
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[bytes]
-
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 является списком или кортежем.Changelog
Новое в версии 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 указывает дату и время, когда исходный сервер считает, что вариант был последний раз изменён.
Changelog
Изменено в версии 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 | str) – Этот параметр определяет значение заголовка
Accept-Ranges. ЕслиFalse(по умолчанию), заголовок не устанавливается. ЕслиTrue, он будет установлен на"bytes". Если это строка, будет использоваться это значение. -
complete_length (int | None) – Будет использоваться только в корректных запросах с диапазоном. Он установит значение полной длины
Content-Rangeи вычислит фактическое значениеContent-Length. Этот параметр обязателен для успешного завершения запросов с диапазонами.
- Возможные исключения:
-
RequestedRangeNotSatisfiableесли заголовокRangeне удалось разобрать или удовлетворить. - Тип возвращаемого значения:
Changelog
Изменено в версии 2.0: Обработка диапазонов пропускается, если длина равна 0, вместо повышения ошибки 416 Range Not Satisfiable.
-
make_sequence() -
Преобразует итератор ответа в список. По умолчанию это происходит автоматически, если требуется. Если
implicit_sequence_conversionотключен, этот метод не вызывается автоматически, и некоторые свойства могут вызывать исключения. Это также кодирует все элементы.Changelog
Новое в версии 0.6.
- Тип возвращаемого значения:
-
None
-
property max_cookie_size: int -
Только для чтения вид конфигурации
MAX_COOKIE_SIZE.См.
max_cookie_sizeв документации Werkzeug.
-
property mimetype: str | None -
Тип MIME (тип содержимого без кодировки и т. д.).
-
property mimetype_params: dict[str, str] -
Параметры типа MIME в виде словаря. Например, если тип содержимого равен
text/html; charset=utf-8, параметры будут{'charset': 'utf-8'}.Changelog
Новое в версии 0.5.
-
response: t.Iterable[str] | t.Iterable[bytes] -
Тело ответа для отправки в качестве WSGI-итератора. Список строк или байтов представляет собой ответ фиксированной длины, любая другая итерируемая последовательность — ответ потокового типа. Строки кодируются в байты как UTF-8.
Не устанавливайте простую строку или байты, это сделает отправку ответа очень неэффективной, так как он будет итерироваться по одному байту за раз.
-
property retry_after: datetime | None -
Поле заголовка ответа Retry-After может использоваться с ответом 503 (Сервис недоступен) для указания того, как долго сервис должен быть недоступен для клиента, который запросил.
Время в секундах до истечения срока действия или дата.
Changelog
Изменено в версии 2.0: Объект datetime имеет часовой пояс.
-
-
set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=False, httponly=False, samesite=None) -
Устанавливает куку.
Выдается предупреждение, если размер заголовка куки превышает
max_cookie_size, но заголовок всё равно будет установлен.- Параметры:
-
- ключ (str) – ключ (имя) устанавливаемой куки.
- значение (str) – значение куки.
-
max_age (timedelta | int | None) – должно быть числом секунд, или
None(по умолчанию), если кука должна храниться только до закрытия браузера клиентом. -
expires (str | datetime | int | float | None) – должно быть объектом
datetimeили меткой времени UNIX. - path (str | None) – ограничивает куку заданным путем, по умолчанию она распространяется на весь домен.
-
domain (str | None) – если необходимо установить куку между доменами. Например,
domain=".example.com"установит куку, доступную для доменаwww.example.com,foo.example.comи т.д. В противном случае кука будет доступна только для домена, который её установил. -
secure (bool) – Если
True, кука будет доступна только через HTTPS. - httponly (bool) – Запретить доступ к куке через JavaScript.
- samesite (str | None) – Ограничить область действия куки только запросами с «одного сайта».
- Тип возвращаемого значения:
-
None
-
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был добавлен для вызовов аутентификации, использующих токен вместо параметров.
-
Сессии
Если вы установили Flask.secret_key (или настроили его из SECRET_KEY), вы можете использовать сессии в приложениях Flask. Сессия позволяет запоминать информацию между запросами. Flask делает это с помощью подписанной куки. Пользователь может просматривать содержимое сессии, но не может его изменить, не зная секретного ключа, поэтому обязательно установите его в сложное и непредсказуемое значение.
Для доступа к текущей сессии можно использовать объект 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. Рекомендуется просто создать подкласс словаря dict и добавить этот миксин: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.
-
get_cookie_domain(app) -
Значение параметра
Domainв куки сеанса. Если не задано, браузеры отправят куки только на точный домен, с которого они были установлены. В противном случае они будут отправлены на любой поддомен заданного значения.Используется конфигурация
SESSION_COOKIE_DOMAIN.Изменено в версии 2.3: По умолчанию не задано, не возвращает
SERVER_NAMEпо умолчанию.
-
get_cookie_httponly(app) -
Возвращает True, если куки сеанса должен быть httponly. В настоящее время возвращает значение конфигурационной переменной
SESSION_COOKIE_HTTPONLY.
-
get_cookie_name(app) -
Имя куки сеанса. Используется``app.config[“SESSION_COOKIE_NAME”]``.
-
get_cookie_path(app) -
Возвращает путь, для которого куки должен быть валиден. Реализация по умолчанию использует значение из конфигурационной переменной
SESSION_COOKIE_PATH, если она задана, и возвращаетAPPLICATION_ROOT, или использует/, еслиNone.
-
get_cookie_samesite(app) -
Возвращает
'Strict'или'Lax', если куки должен использовать атрибутSameSite. В настоящее время возвращает значение настройкиSESSION_COOKIE_SAMESITE.
-
get_cookie_secure(app) -
Возвращает True, если куки должен быть безопасным. В настоящее время возвращает значение настройки
SESSION_COOKIE_SECURE.
-
get_expiration_time(app, session) -
Вспомогательный метод, возвращающий дату истечения срока действия сеанса или
None, если сеанс связан с сеансом браузера. Реализация по умолчанию возвращает текущее время + постоянный срок действия сеанса, настроенный в приложении.- Параметры:
-
- app (Flask) –
- session (SessionMixin) –
- Тип возвращаемого значения:
-
datetime | None
-
is_null_session(obj) -
Проверяет, является ли данный объект пустым сеансом. Пустые сеансы не запрашивают сохранение.
По умолчанию проверяет, является ли объект экземпляром
null_session_class.
-
make_null_session(app) -
Создает пустой сеанс, который действует как замещающий объект, если реальная поддержка сеансов не может быть загружена из-за ошибки конфигурации. Это в основном помогает пользователю, потому что задача пустого сеанса — поддерживать поиск без жалоб, но изменения отвечают полезным сообщением об ошибке, описывающим причину сбоя.
По умолчанию создается экземпляр
null_session_class.- Параметры:
-
app (Flask) –
- Тип возвращаемого значения:
-
-
null_session_class -
make_null_session()будет искать здесь класс, который должен быть создан при запросе нулевой сессии. Аналогично, методis_null_session()выполнит проверку типа против этого типа.Псевдоним для
NullSession
-
open_session(app, request) -
Вызывается в начале каждого запроса после добавления контекста запроса и до сопоставления URL.
Должен вернуть объект, реализующий интерфейс словаря, а также интерфейс
SessionMixin.Этот метод вернет
Noneдля указания того, что загрузка не удалась каким-либо образом, который не является ошибкой. В этом случае контекст запроса вернется к использованиюmake_null_session().- Параметры:
- Тип возвращаемого значения:
-
SessionMixin | None
-
pickle_based = False -
Флаг, указывающий, основана ли сессионная система на сериализации с помощью pickle. Это можно использовать расширениям Flask, чтобы принять решение о том, как обрабатывать объект сессии.
Журнал изменений
Добавлена в версии 0.10.
-
save_session(app, session, response) -
Вызывается в конце каждого запроса после генерации ответа и до удаления контекста запроса. Пропускается, если
is_null_session()возвращаетTrue.- Параметры:
-
- app (Flask) –
- session (SessionMixin) –
- response (Ответ) –
- Тип возвращаемого значения:
-
None
-
should_set_cookie(app, session) -
Используется бэкендами сессий для определения, следует ли устанавливать заголовок
Set-Cookieдля этого куки сессии для этого ответа. Если сессия была изменена, куки устанавливается. Если сессия постоянна, и конфигурацияSESSION_REFRESH_EACH_REQUESTимеет значение true, куки всегда устанавливается.Эта проверка обычно пропускается, если сессия была удалена.
Журнал изменений
Добавлена в версии 0.11.
- Параметры:
-
- app (Flask) –
- session (SessionMixin) –
- Тип возвращаемого значения:
-
-
class flask.sessions.SecureCookieSessionInterface -
Стандартный интерфейс сессий, который хранит сессии в подписанных куках через модуль
itsdangerous.-
static digest_method(string=b'', *, usedforsecurity=True) -
Функция хеширования, которую нужно использовать для подписи. По умолчанию используется sha1
-
key_derivation = 'hmac' -
Название поддерживаемого itsdangerous метода вывода ключа. По умолчанию используется hmac.
-
open_session(app, request) -
Вызывается в начале каждого запроса после добавления контекста запроса и до сопоставления URL.
Должен вернуть объект, реализующий интерфейс словаря, а также интерфейс
SessionMixin.Этот метод вернет
Noneдля указания того, что загрузка не удалась каким-либо образом, который не является ошибкой. В этом случае контекст запроса вернется к использованиюmake_null_session().- Параметры:
- Тип возвращаемого значения:
-
SecureCookieSession | None
-
salt = 'cookie-session' -
Соль, которая должна быть применена поверх секретного ключа для подписи сессий, основанных на куках.
-
save_session(app, session, response) -
Вызывается в конце каждого запроса после генерации ответа и до удаления контекста запроса. Пропускается, если
is_null_session()возвращаетTrue.- Параметры:
-
- app (Flask) –
- session (SessionMixin) –
- response (Ответ) –
- Тип возвращаемого значения:
-
None
-
serializer = <flask.json.tag.TaggedJSONSerializer object> -
Python-сериализатор для полезной нагрузки. По умолчанию используется компактный сериализатор JSON с поддержкой некоторых дополнительных типов Python, таких как объекты datetime или кортежи.
-
session_class -
Псевдоним для
SecureCookieSession
-
-
class flask.sessions.SecureCookieSession(initial=None) -
Базовый класс для сессий на основе подписанных файлов cookie.
Этот бэкэнд сессий будет устанавливать атрибуты
modifiedиaccessed. Он не может надёжно отслеживать, является ли сессия новой (по сравнению с пустой), поэтомуnewостаётся жёстко закодированным вFalse.- Параметры:
-
initial (t.Any) –
-
accessed = False -
заголовок, который позволяет кэширующим прокси кэшировать разные страницы для разных пользователей.
-
get(key, default=None) -
Возвращает значение для ключа, если ключ есть в словаре, иначе возвращает значение по умолчанию.
-
modified = False -
Когда данные изменяются, это устанавливается в
True. Отслеживается только сам словарь сессии; если сессия содержит изменяемые данные (например, вложенный словарь), то это должно быть установлено вTrueвручную при изменении этих данных. Файл cookie сессии будет записан в ответ только если этоTrue.
-
class flask.sessions.NullSession(initial=None) -
Класс, используемый для генерации более информативных сообщений об ошибках, если сессии недоступны. По-прежнему будет разрешён доступ только для чтения к пустой сессии, но запись будет вызывать ошибку.
- Параметры:
-
initial (t.Any) –
-
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 (last-in, first-out). Вызывает KeyError, если словарь пуст.
-
setdefault(*args, **kwargs) -
Вставляет ключ со значением по умолчанию, если ключа нет в словаре.
Возвращает значение для ключа, если ключ есть в словаре, иначе возвращает значение по умолчанию.
-
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 -
Расширяет базовый словарь атрибутами сессии.
-
accessed = True -
Некоторые реализации могут обнаруживать, когда данные сессии читаются или записываются, и устанавливать это, когда это происходит. Значение по умолчанию для mixin жёстко закодировано в
True.
-
modified = True -
Некоторые реализации могут обнаруживать изменения в сессии и устанавливать это, когда это происходит. Значение по умолчанию для mixin жёстко закодировано в
True.
-
property permanent: bool -
Это отражает ключ
'_permanent'в словаре.
-
Замечание
Конфигурация 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) –
-
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.
-
session_transaction(*args, **kwargs) -
При использовании в сочетании с оператором
withоткрывает транзакцию сеанса. Это может использоваться для изменения сеанса, который использует тестовый клиент. После выхода из блокаwithсеанс сохраняется обратно.with client.session_transaction() as session: session['value'] = 42Внутри это реализуется путём перехода через временный тестовый контекст запроса, и поскольку обработка сеанса может зависеть от переменных запроса, эта функция принимает те же аргументы, что и
test_request_context(), которые передаются непосредственно.- Параметры:
- Тип возвращаемого значения:
-
Generator[SessionMixin, None, None]
Запуск командной строки для тестирования
-
class flask.testing.FlaskCliRunner(app, **kwargs) -
CliRunnerдля тестирования команд CLI приложения Flask. Обычно создаётся с помощьюtest_cli_runner(). Смотрите Запуск команд с помощью CLI Runner.- Параметры:
-
- app (Flask) –
- kwargs (t.Any) –
-
invoke(cli=None, args=None, **kwargs) -
Вызывает команду CLI в изолированной среде. См.
CliRunner.invokeдля полной документации метода. См. Запуск команд с помощью CLI Runner для примеров.Если аргумент
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=<object object>) -
Получение и удаление атрибута по имени. Как
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) -
Вспомогательная функция, которая декорирует функцию для сохранения текущего контекста запроса. Это полезно при работе с зелёными потоками. В момент декорирования создаётся копия контекста запроса, а затем она устанавливается, когда вызывается функция. В копию контекста запроса также включается текущая сессия.
Пример:
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.
-
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().- Параметры:
-
-
code (int | BaseResponse) – Код состояния исключения, который должен быть зарегистрирован в
app.aborter. - args (t.Any) – Передаётся в исключение.
- kwargs (t.Any) – Передаётся в исключение.
-
code (int | BaseResponse) – Код состояния исключения, который должен быть зарегистрирован в
- Тип возвращаемого значения:
-
t.NoReturn
Изменения
В версии 2.2: Вызывает
current_app.aborterесли доступен, вместо всегда использования значения по умолчанию Werkzeugabort.
-
flask.redirect(location, code=302, Response=None) -
Создаёт объект ответа перенаправления.
Если
current_appдоступен, он использует его методredirect(), в противном случае используетwerkzeug.utils.redirect().- Параметры:
- Тип возвращаемого значения:
-
BaseResponse
Изменения
В версии 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()как кортеж.
Changelog
Новое в версии 0.6.
- Parameters:
-
args (t.Any) –
- Return type:
-
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!'Это более полезно, если функция, отличная от функции представления, хочет изменить ответ. Например, подумайте о декораторе, который хочет добавить некоторые заголовки без преобразования значения возврата в объект ответа.
Changelog
Новое в версии 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 | 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) – Каталог, в котором
pathдолжен быть расположен, относительно корневого пути текущего приложения. -
path (os.PathLike | str) – Путь к файлу для отправки, относительно
directory. -
kwargs (t.Any) – Аргументы для передачи в
send_file().
-
directory (os.PathLike | 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с MIME-типомapplication/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().- Параметры:
- Тип возвращаемого значения:
Изменено в версии 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на экземпляр класса.- Параметры:
-
app (Flask) – Экземпляр приложения. Он будет сохранен как
weakref.proxyна атрибуте_app.
Журнал изменений
Новое в версии 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.- Параметры:
-
- args (t.Any) – Единое значение для сериализации или несколько значений, которые будут обработаны как список для сериализации.
- kwargs (t.Any) – Обработать как словарь для сериализации.
- Тип возвращаемого значения:
-
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 (Flask) –
-
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. 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().
-
dumps(value) -
Отметить значение и вывести его в компактную строку JSON.
-
loads(value) -
Загрузить данные из строки JSON и десериализовать все помеченные объекты.
-
register(tag_class, force=False, index=None) -
Зарегистрировать новую метку с этим сериализатором.
- Параметры:
-
- tag_class (type[flask.json.tag.JSONTag]) – класс метки для регистрации. Будет создан экземпляр с этим экземпляром сериализатора.
-
force (bool) – перезаписать существующую метку. Если false (по умолчанию), возникает
KeyError. -
index (int | None) – индекс для вставки новой метки в порядок меток. Полезно, когда новая метка является частным случаем существующей метки. Если
None(по умолчанию), метка добавляется в конец порядка.
- Исключения:
-
KeyError – если ключ метки уже зарегистрирован и
forceне равно true. - Тип возвращаемого значения:
-
None
-
tag(value) -
Преобразовать значение в помеченное представление, если необходимо.
-
-
class flask.json.tag.JSONTag(serializer) -
Базовый класс для определения меток типов для
TaggedJSONSerializer.- Параметры:
-
serializer (TaggedJSONSerializer) –
-
check(value) -
Проверить, должно ли данное значение быть помечено этой меткой.
-
key: str | None = None -
Метка для маркировки сериализованного объекта. Если
None, эта метка используется только как промежуточный шаг при маркировке.
-
tag(value) -
Преобразовать значение в допустимый тип JSON и добавить вокруг него структуру тега.
-
to_json(value) -
Преобразовать Python-объект в объект, являющийся допустимым типом 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вместо этого.- Параметры:
-
-
root_path (str | os.PathLike) – путь, относительно которого считываются файлы. Когда объект конфигурации создаётся приложением, это корневой путь приложения
root_path. - defaults (dict | None) – необязательный словарь значений по умолчанию
-
root_path (str | os.PathLike) – путь, относительно которого считываются файлы. Когда объект конфигурации создаётся приложением, это корневой путь приложения
-
from_envvar(variable_name, silent=False) -
Загружает конфигурацию из переменной окружения, указывающей на файл конфигурации. Это в основном просто сокращение с более удобными сообщениями об ошибках для этой строки кода:
app.config.from_pyfile(os.environ['YOURAPPLICATION_SETTINGS'])
-
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) – путь к файлу данных. Это может быть абсолютный путь или относительный к корневому пути конфигурации.
-
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.
-
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_prefixed_env(prefix='FLASK', *, loads=<function loads>) -
Загрузить все переменные окружения, начинающиеся с
FLASK_, удаляя префикс из ключа env для ключа конфигурации. Значения передаются через функцию загрузки для попытки преобразования их в типы, более специфичные, чем строки.Ключи загружаются в порядке
sorted().Функция загрузки по умолчанию пытается разобрать значения как любой допустимый тип JSON, включая словари и списки.
Конкретные элементы в вложенных словарях можно установить, разделив ключи двойным подчеркиванием (
__). Если промежуточного ключа не существует, он будет инициализирован пустым словарем.- Параметры:
-
-
префикс (str) – Загрузить переменные среды, начинающиеся с этого префикса, разделенного подчеркиванием (
_). -
loads (Callable[[str], Any]) – Передать каждое строковое значение в эту функцию и использовать возвращённое значение в качестве значения конфигурации. Если возникает любая ошибка, она игнорируется, и значение остаётся строкой. По умолчанию
json.loads().
-
префикс (str) – Загрузить переменные среды, начинающиеся с этого префикса, разделенного подчеркиванием (
- Тип возвращаемого значения:
Журнал изменений
Введено в версии 2.1.
-
from_pyfile(filename, silent=False) -
Обновляет значения в конфигурации из файла Python. Эта функция ведет себя так, как если бы файл был импортирован как модуль с помощью функции
from_object().- Параметры:
- Возвращает:
-
Trueесли файл был успешно загружен. - Тип возвращаемого значения:
Журнал изменений
Введено в версии 0.7:
silentпараметр.
-
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) -
Контексты запросов исчезают, когда ответ запускается на сервере. Это делается по соображениям эффективности и для уменьшения вероятности возникновения утечек памяти при использовании плохо написанных 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 (dict) –
- request (Request | None) –
- session (SessionMixin | None) –
-
copy() -
Создаёт копию этого контекста запроса с тем же объектом запроса. Это можно использовать для перемещения контекста запроса в другую зелёную нить. Поскольку фактический объект запроса тот же, это нельзя использовать для перемещения контекста запроса в другую нить, если доступ к объекту запроса не заблокирован.
Изменения
Изменено в версии 1.1: Используется текущий объект сессии вместо перезагрузки исходных данных. Это предотвращает
flask.sessionот указания на устаревший объект.Добавлена в версии 0.10.
- Тип возвращаемого значения:
-
match_request() -
Может быть переопределён подклассом для подключения к сопоставлению запроса.
- Тип возвращаемого значения:
-
None
-
pop(exc=<object object>) -
Извлекает контекст запроса и отвязывает его, выполнив это действие. Это также вызовет выполнение функций, зарегистрированных декоратором
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) –
-
pop(exc=<object object>) -
Извлекает контекст приложения.
- Параметры:
-
exc (BaseException | None) –
- Тип возвращаемого значения:
-
None
-
push() -
Привязывает контекст приложения к текущему контексту.
- Тип возвращаемого значения:
-
None
-
flask.globals.app_ctx -
Текущий
AppContext. Если контекст приложения не активен, обращение к атрибутам этого прокси вызоветRuntimeError.Это внутренний объект, который имеет решающее значение для обработки запросов Flask. Обращение к нему в большинстве случаев не требуется. Скорее всего, вам нужен
current_appиgвместо него.
-
class flask.blueprints.BlueprintSetupState(blueprint, app, options, first_registration) -
Временный объект-хранилище для регистрации Blueprint с приложением. Экземпляр этого класса создаётся методом
make_setup_state()и далее передаётся всем функциям обратного вызова регистрации.-
add_url_rule(rule, endpoint=None, view_func=None, **options) -
Вспомогательный метод для регистрации правила (и необязательно функции представления) в приложении. Конечная точка автоматически префиксна с именем Blueprint.
-
app -
ссылка на текущее приложение
-
blueprint -
ссылка на Blueprint, создавший это состояние настроек.
-
first_registration -
Поскольку Blueprint может быть зарегистрирован несколько раз в приложении, и не всё нужно регистрировать несколько раз, этот атрибут может быть использован для определения, был ли Blueprint зарегистрирован ранее.
-
options -
словарь со всеми параметрами, переданными методу
register_blueprint().
-
subdomain -
Поддомен, для которого Blueprint должен быть активен,
Noneв противном случае.
-
url_defaults -
Словарь с значениями по умолчанию для URL, которые были определены с помощью Blueprint.
-
url_prefix -
Префикс, который должен использоваться для всех URL, определённых в Blueprint.
-
Сигналы
Сигналы предоставляются библиотекой 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.
-
signals.signals_available -
Устарело начиная с версии 2.3: Будет удалено в Flask 2.4. Сигналы всегда доступны
Базовые представления на основе классов
Журнал изменений
Новое в версии 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.-
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
-
decorators: ClassVar[list[Callable]] = [] -
Список декораторов для применения в порядке следования к сгенерированной функции представления. Помните, что синтаксис
@decoratorприменяется снизу вверх, поэтому первый декоратор в списке будет нижним декоратором.Журнал изменений
Новое в версии 0.8.
-
dispatch_request() -
Действительное поведение функции представления. Подклассы должны переопределить этот метод и вернуть допустимый ответ. Любые переменные из правила URL передаются в качестве ключевых аргументов.
- Тип возвращаемого значения:
-
ft.ResponseReturnValue
-
init_every_request: ClassVar[bool] = True -
По умолчанию создаётся новый экземпляр этого класса представления для каждого запроса. Если подкласс представления устанавливает это значение в
False, один и тот же экземпляр используется для каждого запроса.Один экземпляр более эффективен, особенно если во время инициализации выполняется сложная настройка. Однако хранение данных в
selfбольше не безопасно при работе с несколькими запросами, и вместо этого следует использоватьg.Журнал изменений
Новое в версии 2.2.
-
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по умолчанию.
-
-
class flask.views.MethodView -
Перенаправляет методы запроса на соответствующие методы экземпляра. Например, если вы реализуете метод
get, он будет использоваться для обработки запросовGET. Это может быть полезно для определения API REST.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. Цель состоит в том, чтобы сохранить уникальность каждого 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 — для страницы 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__: Имя функции по умолчанию используется как точка входа. Если явно задана точка входа, используется это значение. Кроме того, это значение по умолчанию префиксется именем модуля (blueprint), что невозможно настроить непосредственно из функции. -
methods: Если при добавлении правила URL не указаны методы, Flask будет проверять объект функции представления на наличие атрибутаmethods. Если такой атрибут существует, он будет извлечен информацию о методах оттуда. -
provide_automatic_options: если этот атрибут установлен, Flask либо включит, либо отключит автоматическую реализацию HTTP-ответаOPTIONS. Это может быть полезно при работе с декораторами, которые хотят настраивать ответ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) –
Журнал изменений
Изменено в версии 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) -
Эта функция, когда получает имя info и аргументы, запускает разбор и создает новый
Context. Она не вызывает фактический обратный вызов команды.Чтобы быстро настроить используемый класс контекста без переопределения этого метода, установите атрибут
context_class.- Параметры:
-
- info_name (str | None) – имя info для этого вызова. Обычно это самое описательное имя для скрипта или команды. Для скрипта верхнего уровня это обычно имя скрипта, для команд ниже - имя команды.
- 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.
-
group(*args, **kwargs) -
Работает точно так же, как метод с тем же именем в обычной группе
click.Group, но по умолчанию использует класс группыAppGroup.
-
class flask.cli.ScriptInfo(app_import_path=None, create_app=None, set_debug_flag=True) -
Объект-помощник для работы с приложениями Flask. Обычно он не нужен для взаимодействия, так как используется внутри при диспетчеризации в click. В будущих версиях Flask этот объект, скорее всего, будет играть более важную роль. Обычно он создается автоматически объектом
FlaskGroup, но вы также можете создать его вручную и передать в качестве объекта click.- Параметры:
-
app_import_path -
Путь импорта приложения Flask (необязательно).
-
create_app -
Необязательная функция, которая принимает данные о скрипте для создания экземпляра приложения.
-
data: dict[t.Any, t.Any] -
Словарь с произвольными данными, которые можно связать с этими сведениями о скрипте.
-
load_app() -
Загружает приложение Flask (если оно еще не загружено) и возвращает его. Вызов этого метода несколько раз приведет только к возвращению уже загруженного приложения.
- Тип возвращаемого значения:
-
flask.cli.load_dotenv(path=None) -
Загрузка файлов “dotenv” в порядке приоритета для установки переменных окружения.
Если переменная окружения уже установлена, она не перезаписывается, поэтому более ранние файлы в списке имеют приоритет перед более поздними.
Это пустая операция, если модуль python-dotenv не установлен.
- Параметры:
-
path (str | PathLike | None) – Загрузка файла по этому пути вместо поиска.
- Возвращаемое значение:
-
Trueесли файл был загружен. - Тип возвращаемого значения:
Изменения
Изменено в версии 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и параметров обратных вызовов.
-
flask.cli.pass_script_info(f) -
Помечает функцию, чтобы экземпляр
ScriptInfoпередавался в качестве первого аргумента в обратный вызов click.- Параметры:
-
f (F) –
- Тип возвращаемого значения:
-
F
-
flask.cli.run_command = <Command run> -
Запуск локального сервера разработки.
Этот сервер предназначен только для разработки. Он не обеспечивает стабильности, безопасности или производительности серверов WSGI для производства.
Релоадер и отладчик включены по умолчанию с опцией ‘–debug’.
-
flask.cli.shell_command = <Command shell> -
Запуск интерактивной оболочки Python в контексте заданного приложения Flask. Приложение заполнит пространство имен по умолчанию этой оболочки в соответствии с его конфигурацией.
Это полезно для выполнения небольших фрагментов управляющего кода без необходимости ручного настройки приложения.
© 2007–2022 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/2.3.x/api/