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, конфигурации шаблонов и многого другого.
Имя пакета используется для разрешения ресурсов изнутри пакета или из папки, в которой находится модуль, в зависимости от того, соответствует ли параметр пакета фактическому пакету 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 (Optional[str]) – может быть использован для указания другого пути для статических файлов в веб-приложении. По умолчанию используется имя папки
static_folder. -
static_folder (Optional[Union[str, os.PathLike]]) – Папка со статическими файлами, которые будут обслуживаться по адресу
static_url_path. Относительно к корню приложенияroot_pathили абсолютный путь. По умолчанию'static'. -
static_host (Optional[str]) – хост, который будет использоваться при добавлении статического маршрута. По умолчанию None. Требуется при использовании
host_matching=Trueсstatic_folderконфигурацией. -
host_matching (bool) – установите атрибут
url_map.host_matching. По умолчанию False. -
subdomain_matching (bool) – учитывать поддомен относительно
SERVER_NAMEпри сопоставлении маршрутов. По умолчанию False. -
template_folder (Optional[str]) – папка, содержащая шаблоны, которые должны использоваться приложением. По умолчанию папка
'templates'в корне приложения. -
instance_path (Optional[str]) – альтернативный путь к экземпляру приложения. По умолчанию предполагается, что папка
'instance'рядом с пакетом или модулем является путем к экземпляру. -
instance_relative_config (bool) – если установлено в
True, предполагаются относительные имена файлов для загрузки конфигурации относительно пути к экземпляру, а не корня приложения. - root_path (Optional[str]) – путь к корню файлов приложения. Это следует устанавливать вручную только в случае, если его невозможно определить автоматически, например, для пакетов имен.
-
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 (Optional[str]) – Имя конечной точки для связи с правилом и функцией представления. Используется при маршрутизации и построении URL-адресов. По умолчанию
view_func.__name__. - view_func (Optional[Callable]) – Функция представления для связи с именем конечной точки.
-
provide_automatic_options (Optional[bool]) – Добавить метод
OPTIONSи автоматически обрабатывать запросыOPTIONS. -
options (Any) – Дополнительные параметры, передаваемые объекту
Rule.
- Тип возвращаемого значения
-
None
-
after_request(f) -
Зарегистрировать функцию, которая будет выполняться после каждого запроса к этому объекту.
Функция вызывается с объектом ответа и должна возвращать объект ответа. Это позволяет функциям изменять или заменять ответ перед его отправкой.
Если функция вызывает исключение, любые оставшиеся функции
after_requestне будут вызваны. Поэтому этого не следует использовать для действий, которые должны выполняться, например, для закрытия ресурсов. Используйтеteardown_request()для этого.
-
after_request_funcs: t.Dict[AppOrBlueprintKey, t.List[AfterRequestCallable]] -
Структура данных функций, которые вызываются в конце каждого запроса, в формате
{scope: [functions]}. Ключscope— имя модуля, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
after_request().Эта структура данных внутренняя. Ее не следует изменять напрямую, и ее формат может измениться в любой момент.
-
app_context() -
Создать
AppContext. Используйте какwithблок, чтобы поместить контекст, что сделаетcurrent_appточкой на этой приложение.Контекст приложения автоматически помещается в
RequestContext.push()при обработке запроса и при выполнении команды CLI. Используйте это, чтобы вручную создать контекст вне этих ситуаций.with app.app_context(): init_db()См. Контекст приложения.
Changelog
Новое в версии 0.9.
- Тип возвращаемого значения
-
app_ctx_globals_class -
псевдоним
flask.ctx._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_first_request(f) -
Регистрирует функцию, которая будет выполнена перед первой запросом к этому экземпляру приложения.
Функция будет вызвана без аргументов, и её возвращаемое значение игнорируется.
Changelog
Новая в версии 0.8.
-
before_first_request_funcs: t.List[BeforeFirstRequestCallable] -
Список функций, которые будут вызваны в начале первого запроса к этому экземпляру. Для регистрации функции используйте декоратор
before_first_request().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, это значение обрабатывается так, как если бы это было возвращаемое значение из представления, и дальнейшая обработка запроса останавливается.- Параметры
-
-
f (Callable[[], Optional[Union[Response, str, bytes, Dict[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, Dict[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Dict[str, Union[str, List[str], Tuple[str, ...]]]], List[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]]], Tuple[Union[Response, str, bytes, Dict[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes, Dict[str, Any], Iterator[str], Iterator[bytes]], int, Union[Headers, Dict[str, Union[str, List[str], Tuple[str, ...]]], List[Tuple[str, Union[str,
-
-
Callable[[], Optional[Объединение[Response, строка, байты, Словарь[строка, любой], Итератор[строка], Итератор[байты], Кортеж[Объединение[Response, строка, байты, Словарь[строка, любой], Итератор[строка], Итератор[байты]], Объединение[Headers, Словарь[строка, Объединение[строка, Список[строка], Кортеж[строка, …]]], Список[Кортеж[строка, Объединение[строка, Список[строка], Кортеж[строка, …]]]]]], Кортеж[Объединение[Response, строка, байты, Словарь[строка, любой], Итератор[строка], Итератор[байты]], целое число], Кортеж[Объединение[Response, строка, байты, Словарь[строка, любой], Итератор[строка], Итератор[байты]], целое число, Объединение[Headers, Словарь[строка, Объединение[строка, Список[строка], Кортеж[строка, …]]], Список[Кортеж[строка, Объединение[строка, Список[строка], Кортеж[строка, …]]]]]], WSGIApplication]]]
-
-
before_request_funcs: t.Dict[AppOrBlueprintKey, t.List[BeforeRequestCallable]] -
Структура данных функций, вызываемых в начале каждого запроса, в формате
{scope: [functions]}. Ключscope— имя используемого blueprint, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
before_request().Эта структура данных внутренняя. Не следует изменять её напрямую, и её формат может измениться в любое время.
-
blueprints: t.Dict[str, 'Blueprint'] -
Сопоставление зарегистрированных имён blueprints с объектами blueprint. Словарь сохраняет порядок регистрации blueprints. Blueprints можно регистрировать несколько раз; этот словарь не отслеживает частоту их прикрепления.
Changelog
Добавлено в версии 0.7.
-
cli -
Группа команд Click для регистрации команд CLI для этого объекта. Команды доступны из команды
flaskпосле обнаружения приложения и регистрации blueprints.
-
config -
Словарь конфигурации как
Config. Ведёт себя как обычный словарь, но поддерживает дополнительные методы для загрузки конфигурации из файлов.
-
config_class -
Псевдоним для
flask.config.Config
-
context_processor(f) -
Регистрирует функцию процессора контекста шаблонов.
-
create_global_jinja_loader() -
Создаёт загрузчик для среды Jinja2. Можно использовать для переопределения только загрузчика, оставив остальное без изменений. Не рекомендуется переопределять эту функцию. Вместо этого следует переопределить функцию
jinja_loader().Глобальный загрузчик распределяет загрузчики приложения и отдельных blueprints.
Changelog
Добавлено в версии 0.7.
- Тип возвращаемого значения
-
flask.templating.DispatchingJinjaLoader
-
create_jinja_environment() -
Создаёт среду Jinja на основе
jinja_optionsи различных методов приложения, связанных с Jinja. Изменениеjinja_optionsпосле этого не повлияет. Также добавляет глобальные переменные и фильтры Flask в среду.Changelog
Изменено в версии 0.11:
Environment.auto_reloadустанавливается в соответствии с опцией конфигурацииTEMPLATES_AUTO_RELOAD.Добавлено в версии 0.5.
- Тип возвращаемого значения
-
flask.templating.Environment
-
create_url_adapter(request) -
Создаёт адаптер URL для данного запроса. Адаптер URL создаётся в момент, когда контекст запроса ещё не настроен, поэтому запрос передаётся явно.
Changelog
Изменено в версии 1.0:
SERVER_NAMEбольше не неявно включает соответствие по поддоменам. Используйтеsubdomain_matching.Изменено в версии 0.9: Теперь его также можно вызвать без объекта запроса, когда адаптер URL создаётся для контекста приложения.
Добавлено в версии 0.6.
- Параметры
-
request (Optional[flask.wrappers.Request]) –
- Тип возвращаемого значения
-
property debug: bool -
Включён ли режим отладки. При использовании
flask runдля запуска сервера разработки, при необработанных исключениях будет показан интерактивный отладчик, а сервер будет перезагружаться при изменениях кода. Это соответствует ключу конфигурацииDEBUG. Включается, когдаenv—'development', и переопределяется переменной окруженияFLASK_DEBUG. Может работать некорректно, если задан в коде.Не включайте режим отладки при развёртывании в продакшене.
Значение по умолчанию:
Trueеслиenv—'development', илиFalseв противном случае.
-
default_config = {'APPLICATION_ROOT': '/', 'DEBUG': None, 'ENV': None, 'EXPLAIN_TEMPLATE_LOADING': False, 'JSONIFY_MIMETYPE': 'application/json', 'JSONIFY_PRETTYPRINT_REGULAR': False, 'JSON_AS_ASCII': True, 'JSON_SORT_KEYS': True, 'MAX_CONTENT_LENGTH': None, 'MAX_COOKIE_SIZE': 4093, 'PERMANENT_SESSION_LIFETIME': datetime.timedelta(days=31), 'PREFERRED_URL_SCHEME': 'http', 'PRESERVE_CONTEXT_ON_EXCEPTION': None, '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} -
Параметры конфигурации по умолчанию.
-
-
dispatch_request() -
Выполняет обработку запроса. Сопоставляет URL и возвращает значение обработчика представления или обработчика ошибок. Это необязательно должно быть объектом ответа. Для преобразования возвращаемого значения в соответствующий объект ответа вызовите
make_response().Изменения
Изменено в версии 0.7: Теперь эта функция не выполняет обработку исключений, этот код был перенесён в новую функцию
full_dispatch_request().- Тип возвращаемого значения
-
Объединение[Ответ, строка, байты, Словарь[строка, любой], Итератор[строка], Итератор[байты], Кортеж[Объединение[Ответ, строка, байты, Словарь[строка, любой], Итератор[строка], Итератор[байты]], Объединение[Заголовки, Словарь[строка, Объединение[строка, Список[строка], Кортеж[строка, …]]], Список[Кортеж[строка, Объединение[строка, Список[строка], Кортеж[строка, …]]]]]], Кортеж[Объединение[Ответ, строка, байты, Словарь[строка, любой], Итератор[строка], Итератор[байты]], целое], Кортеж[Объединение[Ответ, строка, байты, Словарь[строка, любой], Итератор[строка], Итератор[байты]], целое, Объединение[Заголовки, Словарь[строка, Объединение[строка, Список[строка], Кортеж[строка, …]]], Список[Кортеж[строка, Объединение[строка, Список[строка], Кортеж[строка, …]]]]]], WSGIПриложение]
-
-
do_teardown_appcontext(exc=<object object>) -
Вызывается непосредственно перед тем, как контекст приложения будет удалён.
При обработке запроса контекст приложения удаляется после контекста запроса. См.
do_teardown_request().Это вызывает все функции, помеченные декоратором
teardown_appcontext(). Затем отправляется сигналappcontext_tearing_down.Вызывается методом
AppContext.pop().Changelog
Добавлено в версии 0.9.
- Parameters
-
exc (Optional[BaseException]) –
- Return type
-
None
-
do_teardown_request(exc=<object object>) -
Вызывается после обработки запроса и возвращения ответа, непосредственно перед удалением контекста запроса.
Это вызывает все функции, помеченные декораторами
teardown_request()иBlueprint.teardown_request(), если запрос обрабатывался планом. В заключение отправляется сигналrequest_tearing_down.Вызывается методом
RequestContext.pop(), который может быть отложен во время тестирования для сохранения доступа к ресурсам.- Parameters
-
exc (Optional[BaseException]) – Необработанное исключение, поднятое при обработке запроса. Определяется из текущей информации об исключении, если не передано. Передаётся каждой функции завершения.
- Return type
-
None
Changelog
Изменено в версии 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функции оборачиваются для выполнения и ожидания ответа.Переопределите этот метод, чтобы изменить способ работы асинхронных представлений приложения.
Changelog
Добавлено в версии 2.0.
-
env -
Среда, в которой запущено приложение. Flask и расширения могут использовать поведение, основанное на среде, например, включение отладочного режима. Это сопоставляется с параметром конфигурации
ENV. Устанавливается переменной средыFLASK_ENV, и может работать непредсказуемо, если установлена в коде.Не включайте отладку при развертывании в рабочей среде.
Значение по умолчанию:
'production'
-
error_handler_spec: t.Dict[AppOrBlueprintKey, t.Dict[t.Optional[int], t.Dict[t.Type[Exception], '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', 500Changelog
Добавлено в версии 0.7: Используйте
register_error_handler()вместо прямого измененияerror_handler_specдля обработчиков ошибок всего приложения.Добавлено в версии 0.7: Теперь можно дополнительно регистрировать пользовательские типы исключений, которые не обязательно должны быть подклассом класса
HTTPException.
-
extensions: dict -
место, где расширения могут хранить состояние, специфичное для приложения. Например, здесь расширение может хранить движки баз данных и аналогичные вещи.
Ключ должен соответствовать имени модуля расширения. Например, в случае расширения “Flask-Foo” в
flask_foo, ключ будет'foo'.Changelog
Добавлено в версии 0.7.
-
full_dispatch_request() -
Обрабатывает запрос и выполняет предварительную и последующую обработку запроса, а также перехват исключений HTTP и обработку ошибок.
Changelog
Добавлено в версии 0.7.
- Return type
-
-
get(rule, **options) -
Сокращение для
route()сmethods=["GET"].Журнал изменений
Новая версия в версии 2.0.
-
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 got_first_request: bool -
Этот атрибут установлен в
True, если приложение начало обработку первого запроса.Журнал изменений
Новая версия в версии 0.8.
-
handle_exception(e) -
Обрабатывает исключение, для которого не был связан обработчик ошибок, или которое было вызвано обработчиком ошибок. Это всегда приводит к ответу 500
InternalServerError.Всегда отправляет сигнал
got_request_exception.Если
propagate_exceptionsравенTrue, например, в режиме отладки, ошибка будет повторно поднята, чтобы отладчик мог её отобразить. В противном случае исходное исключение регистрируется, и возвращаетсяInternalServerError.Если обработчик ошибок зарегистрирован для
InternalServerErrorили500, он будет использован. Для согласованности обработчик всегда получитInternalServerError. Исходное необработанное исключение доступно какe.original_exception.Журнал изменений
Изменено в версии 1.1.0: Всегда передаёт экземпляр
InternalServerErrorв обработчик, устанавливаяoriginal_exceptionв необработанную ошибку.Изменено в версии 1.1.0:
after_requestфункции и другие завершающие действия выполняются даже для стандартного ответа 500, когда нет обработчика.Новая версия в версии 0.3.
- Параметры
-
e (Исключение) –
- Тип возвращаемого значения
-
handle_http_exception(e) -
Обрабатывает исключение HTTP. По умолчанию это вызывает зарегистрированные обработчики ошибок и возвращает исключение в качестве ответа.
Журнал изменений
Изменено в версии 1.0.3:
RoutingException, используемый во внутренней работе для действий, таких как перенаправление на слеш во время маршрутизации, не передаётся обработчикам ошибок.Изменено в версии 1.0: Исключения ищутся по коду и по MRO, поэтому подклассы
HTTPExceptionмогут обрабатываться универсальным обработчиком для базовогоHTTPException.Новая версия в версии 0.3.
-
- Параметры
- Тип возвращаемого значения
-
Union[werkzeug.exceptions.HTTPException, Response, str, bytes, Dict[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, Dict[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Dict[str, Union[str, List[str], Tuple[str, …]]], List[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], Tuple[Union[Response, str, bytes, Dict[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes, Dict[str, Any], Iterator[str], Iterator[bytes]], int, Union[Headers, Dict[str, Union[str, List[str], Tuple[str, …]]], List[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], WSGIApplication]
-
handle_url_build_error(error, endpoint, values) -
Обработка
BuildErrorпри построении URL наurl_for().- Параметры
-
- error (Исключение) –
- endpoint (строка) –
- values (словарь) –
- Тип возвращаемого значения
-
handle_user_exception(e) -
Этот метод вызывается при возникновении исключения, которое должно быть обработано. Специальный случай —
HTTPException, который передаётся методуhandle_http_exception(). Эта функция либо вернёт значение ответа, либо повторно поднимет исключение с тем же трассировкой.Изменения
Изменено в версии 1.0: Ошибки ключей, возникшие из данных запроса, например
form, отображают плохой ключ в режиме отладки, а не общее сообщение об ошибке плохого запроса.Добавлен в версии 0.7.
-
- Параметры
-
e (Исключение) –
- Тип возвращаемого значения
-
Union[werkzeug.exceptions.HTTPException, Response, str, bytes, Dict[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, Dict[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Dict[str, Union[str, List[str], Tuple[str, …]]], List[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], Tuple[Union[Response, str, bytes, Dict[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes, Dict[str, Any], Iterator[str], Iterator[bytes]], int, Union[Headers, Dict[str, Union[str, List[str], Tuple[str, …]]], List[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], WSGIApplication]
-
property has_static_folder: bool -
Trueеслиstatic_folderзадано.Changelog
Новая в версии 0.5.
-
import_name -
Имя пакета или модуля, к которому относится этот объект. Не изменяйте его после того, как он был установлен конструктором.
-
inject_url_defaults(endpoint, values) -
Вставляет значения по умолчанию для заданного конечной точки напрямую в словарь values. Это используется внутри и автоматически вызывается при построении URL.
Changelog
Новая в версии 0.7.
-
instance_path -
Содержит путь к папке экземпляра.
Changelog
Новая в версии 0.8.
-
iter_blueprints() -
Итерируется по всем blueprints в порядке их регистрации.
Changelog
Новая в версии 0.11.
- Тип возвращаемого значения
-
property jinja_env: flask.templating.Environment -
Среда Jinja, используемая для загрузки шаблонов.
Среда создается при первом обращении к этому свойству. Изменение
jinja_optionsпосле этого не повлияет.
-
jinja_environment -
псевдоним
flask.templating.Environment
-
property jinja_loader: Optional[jinja2.loaders.FileSystemLoader] -
Загрузчик 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_decoder -
псевдоним
flask.json.JSONDecoder
-
json_encoder -
псевдоним
flask.json.JSONEncoder
-
log_exception(exc_info) -
Регистрирует исключение. Это вызывается
handle_exception(), если отладка отключена, и непосредственно перед вызовом обработчика. По умолчанию регистрирует исключение как ошибку вlogger.Changelog
Новая в версии 0.8.
- Параметры
-
exc_info (Union[Tuple[type, BaseException, types.TracebackType], Tuple[None, None, None]]) –
- Тип возвращаемого значения
-
None
-
property logger: logging.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_config(instance_relative=False) -
Используется для создания атрибута config конструктором Flask. Параметр
instance_relativeпередается конструктором Flask (называется тамinstance_relative_config) и указывает, должен ли config быть относительным к пути экземпляра или корневому пути приложения.Changelog
Новая в версии 0.8.
- Параметры
-
instance_relative (bool) –
- Тип возвращаемого значения
-
make_default_options_response() -
Этот метод вызывается для создания ответа по умолчанию
OPTIONS. Это можно изменить, создав подкласс, чтобы изменить поведение ответов по умолчаниюOPTIONS.Changelog
Новая в версии 0.7.
- Тип возвращаемого значения
-
make_response(rv) -
Преобразует возвращаемое значение из функции представления в экземпляр
response_class.
-
- Параметры
-
rv (Union[Response, str, bytes, Dict[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, Dict[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Dict[str, Union[str, List[str], Tuple[str, ...]]]], List[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]], Tuple[Union[Response, str, bytes, Dict[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes, Dict[str, Any], Iterator[str], Iterator[bytes]], int, Union[Headers, Dict[str, Union[str, List[str], Tuple[str, ...]]], List[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]]]]
Tuple[str, ...]]]]]], WSGIApplication]) –
значение, возвращаемое функцией представления. Функция представления должна вернуть ответ. Возвращение
None, или завершение функции представления без возврата, запрещено. Допустимые типы дляview_rv:-
str -
Объект ответа создается со строкой, закодированной в UTF-8, в качестве тела.
-
bytes -
Объект ответа создается с байтами в качестве тела.
-
dict -
Словарь, который будет сериализован с помощью jsonify перед возвратом.
-
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. Результат используется для создания объекта ответа.
-
- Тип возвращаемого значения
Журнал изменений
Изменено в версии 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)
-
post(rule, **options) -
Сокращение для
route()сmethods=["POST"].Журнал изменений
Добавлена в версии 2.0.
-
preprocess_request() -
Вызывается перед обработкой запроса. Вызывает
url_value_preprocessors, зарегистрированные в приложении и текущем шаблоне (если таковой имеется). Затем вызываетbefore_request_funcs, зарегистрированные в приложении и шаблоне.Если какой-либо обработчик
before_request()возвращает ненулевое значение, это значение обрабатывается так, как если бы это было возвращаемое значение представления, и дальнейшая обработка запроса прекращается.
- Тип возвращаемого значения
-
Optional[Объединение[Response, str, bytes, Словарь[str, Любое], Итератор[str], Итератор[bytes], Кортеж[Объединение[Response, str, bytes, Словарь[str, Любое], Итератор[str], Итератор[bytes]], Объединение[Headers, Словарь[str, Объединение[str, Список[str], Кортеж[str, …]]], Список[Кортеж[str, Объединение[str, Список[str], Кортеж[str, …]]]]]], Кортеж[Объединение[Response, str, bytes, Словарь[str, Любое], Итератор[str], Итератор[bytes]], int], Кортеж[Объединение[Response, str, bytes, Словарь[str, Любое], Итератор[str], Итератор[bytes]], int, Объединение[Headers, Словарь[str, Объединение[str, Список[str], Кортеж[str, …]]], Список[Кортеж[str, Объединение[str, Список[str], Кортеж[str, …]]]]]], WSGIApplication]]
-
property preserve_context_on_exception: bool -
Возвращает значение конфигурации
PRESERVE_CONTEXT_ON_EXCEPTIONв случае ее установки, в противном случае возвращается разумное значение по умолчанию.Журнал изменений
Введено в версии 0.7.
-
process_response(response) -
Можно переопределить, чтобы изменить объект ответа перед отправкой его серверу WSGI. По умолчанию это вызовет все функции, декорированные
after_request().Changelog
Изменено в версии 0.5: Начиная с Flask 0.5, функции, зарегистрированные для выполнения после запроса, вызываются в обратном порядке регистрации.
- Параметры
-
response (flask.wrappers.Response) – объект
response_class. - Возвращает
-
новый объект ответа или тот же, должен быть экземпляром
response_class. - Тип возвращаемого значения
-
property propagate_exceptions: bool -
Возвращает значение конфигурационного параметра
PROPAGATE_EXCEPTIONS, если он задан, иначе возвращает разумное значение по умолчанию.Changelog
Добавлена в версии 0.7.
-
put(rule, **options) -
Сокращение для
route()сmethods=["PUT"].Changelog
Добавлена в версии 2.0.
-
register_blueprint(blueprint, **options) -
Зарегистрировать
Blueprintв приложении. Аргументы ключевых слов, переданные в этот метод, переопределят значения по умолчанию, заданные в синем принте.Вызывает метод
register()синего принтера после записи синего принтера вblueprintsприложения.- Параметры
-
- blueprint (Blueprint) – Синий принтер для регистрации.
- url_prefix – Маршруты синего принтера будут иметь этот префикс.
- subdomain – Маршруты синего принтера будут соответствовать этому домену.
- url_defaults – Маршруты синего принтера будут использовать эти значения по умолчанию для аргументов представления.
-
options (Any) – Дополнительные аргументы ключевых слов передаются в
BlueprintSetupState. К ним можно получить доступ в обратных вызовахrecord().
- Тип возвращаемого значения
-
None
Changelog
Изменено в версии 2.0.1: Параметр
nameможет использоваться для изменения имени синего принтера (с префиксом), с которым он регистрируется. Это позволяет регистрировать один и тот же синего принтер несколько раз с уникальными именами дляurl_for.Добавлена в версии 0.7.
-
register_error_handler(code_or_exception, f) -
Альтернативная функция регистрации обработчика ошибок к декоратору
errorhandler(), которая более проста в использовании для не-декораторного использования.Changelog
Добавлена в версии 0.7.
-
request_class -
псевдоним для
flask.wrappers.Request
-
request_context(environ) -
Создать
RequestContext, представляющий среду WSGI. Используйте блокwithдля помещения контекста, что позволитrequestуказывать на этот запрос.См. Контекст запроса.
Как правило, вам не следует вызывать это из собственного кода. Контекст запроса автоматически помещается приложением
wsgi_app()при обработке запроса. Используйтеtest_request_context()для создания среды и контекста вместо этого метода.- Параметры
-
environ (dict) – среда WSGI
- Тип возвращаемого значения
-
response_class -
псевдоним для
flask.wrappers.Response
-
root_path -
Абсолютный путь к пакету в файловой системе. Используется для поиска ресурсов, содержащихся в пакете.
-
route(rule, **options) -
Декорирует функцию представления для регистрации её с заданным правилом URL и параметрами. Вызывает
add_url_rule(), в котором есть больше деталей об реализации.@app.route("/") def index(): return "Hello, World!"См. Регистрация правил маршрутов URL.
Имя конечной точки маршрута по умолчанию равно имени функции представления, если параметр
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 (Optional[str]) – имя хоста для прослушивания. Установите его в
'0.0.0.0'для того, чтобы сервер также был доступен извне. По умолчанию'127.0.0.1'или хост из переменной конфигурацииSERVER_NAMEпри её наличии. -
port (Optional[int]) – порт веб-сервера. По умолчанию
5000или порт, определённый в переменной конфигурацииSERVER_NAMEпри её наличии. -
debug (Optional[bool]) – если указано, включает или отключает режим отладки. См.
debug. -
load_dotenv (bool) – Загрузить ближайшие файлы
.envи.flaskenvдля установки переменных окружения. Также изменит рабочую директорию на директорию, содержащую первый найденный файл. -
options (Any) – параметры, которые будут переданы подлежащему серверу Werkzeug. См.
werkzeug.serving.run_simple()для получения дополнительной информации.
-
host (Optional[str]) – имя хоста для прослушивания. Установите его в
- Тип возвращаемого значения
-
None
Изменения
Изменено в версии 1.0: При установке, python-dotenv будет использоваться для загрузки переменных окружения из файлов
.envи.flaskenv.Если установлено, переменные окружения
FLASK_ENVиFLASK_DEBUGпереопределятenvиdebug.Режим потоков включен по умолчанию.
Изменено в версии 0.10: Порт по умолчанию теперь выбирается из переменной
SERVER_NAME.
-
secret_key -
Если ключ секретности установлен, криптографические компоненты могут использовать его для подписи куки и других вещей. Установите его в сложное случайное значение, когда вы хотите использовать защищенные куки, например.
Этот атрибут также можно настроить из конфигурации с помощью ключа конфигурации
SECRET_KEY. По умолчаниюNone.
-
select_jinja_autoescape(filename) -
Возвращает
Trueесли автоэкранирование должно быть активным для данного имени шаблона. Если имя шаблона не указано, возвращаетTrue.Изменения
Добавлен в версии 0.5.
-
send_file_max_age_default -
timedeltaили количество секунд, используемое в качестве значения по умолчаниюmax_ageдляsend_file(). По умолчаниюNone, что сообщает браузеру использовать условные запросы вместо кэширования по времени.Настраивается с помощью ключа конфигурации
SEND_FILE_MAX_AGE_DEFAULT.Изменения
Изменено в версии 2.0: По умолчанию
Noneвместо 12 часов.
-
send_static_file(filename) -
Функция представления, используемая для обработки файлов из
static_folder. Маршрут автоматически регистрируется для этого представления по адресуstatic_url_path, еслиstatic_folderустановлен.Изменения
Добавлен в версии 0.5.
-
session_cookie_name -
Защищенные куки используют это имя для куки сессии.
Этот атрибут также можно настроить из конфигурации с помощью ключа конфигурации
SESSION_COOKIE_NAME. По умолчанию'session'
-
session_interface: flask.sessions.SessionInterface = <flask.sessions.SecureCookieSessionInterface object> -
интерфейс сессий для использования. По умолчанию здесь используется экземпляр
SecureCookieSessionInterface.Изменения
Добавлен в версии 0.8.
-
shell_context_processor(f) -
Регистрирует функцию контекста оболочки.
Изменения
Добавлен в версии 0.11.
-
shell_context_processors: t.List[t.Callable[[], t.Dict[str, t.Any]]] -
Список функций обработчиков контекста оболочки, которые должны быть выполнены при создании контекста оболочки.
Изменения
Добавлен в версии 0.11.
-
-
should_ignore_error(error) -
Это вызывается, чтобы определить, следует ли игнорировать ошибку с точки зрения системы завершения. Если эта функция возвращает
True, обработчики завершения не получат ошибку.Журнал изменений
Новая функция в версии 0.10.
- Параметры
-
error (Optional[BaseException]) –
- Тип возвращаемого значения
-
property static_folder: Optional[str] -
Абсолютный путь к настроенной папке со статическими файлами.
Noneесли папка со статическими файлами не задана.
-
property static_url_path: Optional[str] -
Префикс URL, по которому будет доступна статическая маршрутизация.
Если он не был настроен во время инициализации, он определяется из
static_folder.
-
teardown_appcontext(f) -
Регистрирует функцию, которая будет вызываться при завершении контекста приложения. Эти функции обычно также вызываются при извлечении контекста запроса.
Пример:
ctx = app.app_context() ctx.push() ... ctx.pop()
Когда
ctx.pop()выполняется в приведённом выше примере, функции завершения вызываются непосредственно перед тем, как контекст приложения убирается из стека активных контекстов. Это становится актуальным, если вы используете такие конструкции в тестах.Поскольку контекст запроса обычно также управляет контекстом приложения, он также будет вызван при извлечении контекста запроса.
Если функция завершения была вызвана из-за необработанной исключительной ситуации, ей будет передан объект ошибки. Если зарегистрирован
errorhandler(), он обработает исключение, и функция завершения его не получит.Значения возврата функций завершения игнорируются.
Журнал изменений
Новая функция в версии 0.9.
- Параметры
-
f (Callable[[Optional[BaseException]], None]) –
- Тип возвращаемого значения
-
Callable[[Optional[BaseException]], None]
-
teardown_appcontext_funcs: t.List[TeardownCallable] -
Список функций, которые вызываются при уничтожении контекста приложения. Поскольку контекст приложения также уничтожается при завершении запроса, это место для хранения кода, который отключается от баз данных.
Журнал изменений
Новая функция в версии 0.9.
-
teardown_request(f) -
Регистрирует функцию, которая будет выполняться в конце каждого запроса, независимо от того, была ли исключительная ситуация или нет. Эти функции выполняются при извлечении контекста запроса, даже если фактически запрос не выполнялся.
Пример:
ctx = app.test_request_context() ctx.push() ... ctx.pop()
Когда
ctx.pop()выполняется в приведённом выше примере, функции завершения вызываются непосредственно перед тем, как контекст запроса убирается из стека активных контекстов. Это становится актуальным, если вы используете такие конструкции в тестах.Функции завершения должны избегать повышения исключений. Если они выполняют код, который может завершиться ошибкой, они должны обернуть выполнение этого кода в инструкции try/except и регистрировать любые ошибки.
Если функция завершения была вызвана из-за исключения, ей будет передан объект ошибки.
Значения возврата функций завершения игнорируются.
Примечание для отладки
В режиме отладки Flask не будет сразу же завершать запрос при возникновении исключения. Вместо этого он будет сохранять его активным, чтобы интерактивный отладчик всё ещё мог получить к нему доступ. Это поведение можно настроить с помощью переменной конфигурации
PRESERVE_CONTEXT_ON_EXCEPTION.- Параметры
-
f (Callable[[Optional[BaseException]], None]) –
- Тип возвращаемого значения
-
Callable[[Optional[BaseException]], None]
-
teardown_request_funcs: t.Dict[AppOrBlueprintKey, t.List[TeardownCallable]] -
Структура данных функций, которые вызываются в конце каждого запроса, даже если возникло исключение, в формате
{scope: [functions]}. Ключscope— это имя модуля, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
teardown_request().Эта структура данных является внутренней. Ее не следует изменять напрямую, и её формат может меняться в любое время.
-
template_context_processors: t.Dict[AppOrBlueprintKey, t.List[TemplateContextProcessorCallable]] -
Структура данных функций, вызываемых для передачи дополнительных значений контекста при рендеринге шаблонов, в формате
{scope: [functions]}. Ключscope— это имя модуля, для которого активны функции, или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.
-
property templates_auto_reload: bool -
Перезагружать шаблоны при изменении. Используется
create_jinja_environment().Этот атрибут может быть настроен с помощью
TEMPLATES_AUTO_RELOAD. Если не задано, он будет включен в режиме отладки.Изменения
Новая в версии 1.0: Это свойство было добавлено, но лежащие в его основе конфигурация и поведение уже существовали.
-
test_cli_runner(**kwargs) -
Создать исполняемый файл командной строки для тестирования команд командной строки. См. Запуск команд с исполняемым файлом командной строки.
Возвращает экземпляр
test_cli_runner_class, по умолчаниюFlaskCliRunner. Объект приложения Flask передается в качестве первого аргумента.Изменения
Новая в версии 1.0.
- Параметры
-
kwargs (Any) –
- Тип возвращаемого значения
-
test_cli_runner_class: Optional[Type[FlaskCliRunner]] = None -
Подкласс
CliRunner, по умолчаниюFlaskCliRunner, который используетсяtest_cli_runner(). Его метод__init__должен принимать объект приложения Flask в качестве первого аргумента.Изменения
Новая в версии 1.0.
-
test_client(use_cookies=True, **kwargs) -
Создает тестовый клиент для этого приложения. Сведения о модульном тестировании см. в Тестирование приложений Flask.
Обратите внимание, что если вы тестируете утверждения или исключения в коде приложения, вы должны установить
app.testing = Trueдля распространения исключений на тестовый клиент. В противном случае исключение будет обработано приложением (невидимым для тестового клиента), и единственным указанием на ошибку утверждения или другое исключение будет ответ кода состояния 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для клиента.- Параметры
- Тип возвращаемого значения
-
test_client_class: Optional[Type[FlaskClient]] = None -
Метод
test_client()создает экземпляр этого класса тестового клиента. По умолчаниюFlaskClient.Изменения
Новая в версии 0.7.
-
-
test_request_context(*args, **kwargs) -
Создать
RequestContextдля WSGI-окружения, созданного из заданных значений. Это в основном полезно во время тестирования, когда вы хотите запустить функцию, использующую данные запроса, не отправляя полный запрос.См. Контекст запроса.
Используйте блок
withдля помещения контекста, что сделаетrequestуказывать на запрос для созданного окружения.with 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_typeapplication/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.Изменения
Изменено в версии 1.0: Ошибка при плохом запросе по умолчанию не перехватывается в режиме отладки.
Добавлена в версии 0.8.
-
update_template_context(context) -
Обновление контекста шаблона с помощью некоторых часто используемых переменных. Это вставляет request, session, config и g в контекст шаблона, а также всё, что процессоры контекста шаблона хотят вставить. Обратите внимание, что, начиная с Flask 0.6, исходные значения в контексте не будут перезаписаны, если процессор контекста решит вернуть значение с тем же ключом.
- Параметры
-
context (dict) – контекст в виде словаря, который обновляется на месте для добавления дополнительных переменных.
- Тип возвращаемого значения
-
None
-
url_build_error_handlers: t.List[t.Callable[[Exception, str, dict], str]] -
Список функций, которые вызываются, когда
url_for()поднимает исключениеBuildError. Каждая зарегистрированная здесь функция вызывается сerror,endpointиvalues. Если функция возвращаетNoneили поднимает исключениеBuildError, пытается вызывать следующую функцию.Изменения
Добавлена в версии 0.9.
-
url_default_functions: t.Dict[AppOrBlueprintKey, t.List[URLDefaultCallable]] -
Структура данных функций для изменения именованных аргументов при генерации URL-адресов в формате
{scope: [functions]}. Ключscope— имя подключаемого модуля, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
url_defaults().Эта структура данных внутренняя. Не следует изменять её напрямую, и её формат может меняться в любое время.
-
url_defaults(f) -
Обратная функция для значений по умолчанию URL для всех функций представления приложения. Вызывается с именем конечной точки и значениями и должна обновлять переданные значения на месте.
-
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 -
Псевдоним
werkzeug.routing.Map
-
url_rule_class -
Псевдоним
werkzeug.routing.Rule
-
-
url_value_preprocessor(f) -
Зарегистрируйте функцию предварительной обработки значений URL для всех функций представления в приложении. Эти функции будут вызываться до функций
before_request().Функция может изменять значения, полученные из соответствующего URL, перед тем, как они будут переданы представлению. Например, это можно использовать для извлечения общего кода языка и размещения его в
gвместо передачи его каждому представлению.Функция получает имя конечной точки и словарь значений. Возвращаемое значение игнорируется.
-
url_value_preprocessors: t.Dict[AppOrBlueprintKey, t.List[URLValuePreprocessorCallable]] -
Структура данных функций, вызываемых для изменения ключевых аргументов, передаваемых функции представления, в формате
{scope: [functions]}. Ключscope— имя модуля, для которого активны эти функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
url_value_preprocessor().Эта структура данных является внутренней. Ее не следует изменять напрямую, и ее формат может измениться в любое время.
-
use_x_sendfile -
Включите эту опцию, если хотите использовать функцию X-Sendfile. Имейте в виду, что сервер должен поддерживать эту функцию. Это влияет только на файлы, отправленные с помощью метода
send_file().Changelog
Новое в версии 0.2.
Этот атрибут также можно настроить из конфигурации с помощью ключа конфигурации
USE_X_SENDFILE. Значение по умолчаниюFalse.
-
view_functions: t.Dict[str, t.Callable] -
Словарь, сопоставляющий имена конечных точек с функциями представлений.
Для регистрации функции представления используйте декоратор
route().Эта структура данных является внутренней. Ее не следует изменять напрямую, и ее формат может измениться в любое время.
-
wsgi_app(environ, start_response) -
Фактическое приложение WSGI. Это не реализовано в
__call__()для того, чтобы можно было применять средние слои без потери ссылки на объект приложения. Вместо этого:app = MyMiddleware(app)
Лучше сделать так:
app.wsgi_app = MyMiddleware(app.wsgi_app)
Тогда у вас по-прежнему будет исходный объект приложения, и вы сможете продолжить вызывать методы на нём.
Changelog
Изменено в версии 0.7: События завершения для контекстов запроса и приложения вызываются, даже если произошла необработанная ошибка. Другие события могут не вызываться в зависимости от того, когда произошла ошибка во время обработки. См. Обработчики событий и ошибки.
-
Объекты шаблонов
-
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>) -
Представляет шаблон — набор маршрутов и других функций, связанных с приложением, которые можно зарегистрировать в реальном приложении позже.
Шаблон — это объект, который позволяет определять функции приложения без предварительного указания объекта приложения. Он использует те же декораторы, что и
Flask, но откладывает необходимость указания приложения, записывая их для последующей регистрации.Декорирование функции шаблоном создаёт отложенную функцию, которая вызывается с
BlueprintSetupStateпри регистрации шаблона в приложении.См. Модульные приложения с шаблонами для получения дополнительной информации.
- Параметры
-
- name (str) – Имя шаблона. Будет добавлено к каждому имени конечной точки.
-
import_name (str) – Имя пакета шаблона, обычно
__name__. Это помогает найтиroot_pathдля шаблона. - static_folder (Optional[Union[str, os.PathLike]]) – Папка со статическими файлами, которые должен обслуживать статический маршрут шаблона. Путь относительный к корню шаблона. Статические файлы шаблона по умолчанию отключены.
-
static_url_path (Optional[str]) – URL для предоставления статических файлов. По умолчанию
static_folder. Если у шаблона нетurl_prefix, приоритет будет у статического маршрута приложения, и статические файлы шаблона будут недоступны. - template_folder (Optional[str]) – Папка с шаблонами, которые должны быть добавлены в путь поиска шаблонов приложения. Путь относительный к корню шаблона. Шаблоны шаблона по умолчанию отключены. Шаблоны шаблона имеют более низкий приоритет, чем шаблоны в папке шаблонов приложения.
- url_prefix (Optional[str]) – Путь, который будет добавлен к всем URL шаблона, чтобы они отличались от маршрутов остальной части приложения.
- subdomain (Optional[str]) – Поддомен, по умолчанию соответствующий маршрутам шаблона.
- url_defaults (Optional[dict]) – Словарь значений по умолчанию, которые маршруты шаблона будут получать по умолчанию.
-
root_path (Optional[str]) – По умолчанию шаблон автоматически устанавливает это значение на основе
import_name. В некоторых ситуациях автоматическое определение может завершиться неудачно, поэтому путь можно указать вручную. - cli_group (Optional[str]) –
Изменения
Изменено в версии 1.1.0: У шаблонов есть группа
cliдля регистрации вложенных команд CLI. Параметрcli_groupуправляет именем группы в рамках командыflask.Добавлена в версии 0.7.
-
add_app_template_filter(f, name=None) -
Регистрация пользовательского фильтра шаблонов, доступного на уровне приложения. Как
Flask.add_template_filter(), но для шаблона. Работает точно так же, как декораторapp_template_filter().
-
add_app_template_global(f, name=None) -
Регистрация пользовательской глобальной переменной шаблона, доступной на уровне приложения. Как
Flask.add_template_global(), но для шаблона. Работает точно так же, как декораторapp_template_global().Изменения
Добавлена в версии 0.10.
-
add_app_template_test(f, name=None) -
Регистрация пользовательского теста шаблонов, доступного на уровне приложения. Как
Flask.add_template_test(), но для шаблона. Работает точно так же, как декораторapp_template_test().Изменения
Добавлена в версии 0.10.
-
add_url_rule(rule, endpoint=None, view_func=None, provide_automatic_options=None, **options) -
Как
Flask.add_url_rule(), но для шаблона. Конечная точка для функцииurl_for()имеет префикс с именем шаблона.
-
after_app_request(f) -
Аналогично
Flask.after_request(), но для шаблона. Такая функция выполняется после каждого запроса, даже если за пределами шаблона.
-
after_request(f) -
Регистрирует функцию, которая выполняется после каждого запроса к этому объекту.
Функция вызывается с объектом ответа и должна возвращать объект ответа. Это позволяет функциям изменять или заменять ответ перед его отправкой.
Если функция вызывает исключение, любые оставшиеся
after_requestфункции не будут вызваны. Поэтому это не следует использовать для действий, которые должны быть выполнены, например, для закрытия ресурсов. Используйтеteardown_request()для этого.
-
after_request_funcs: t.Dict[AppOrBlueprintKey, t.List[AfterRequestCallable]] -
Структура данных функций для вызова в конце каждого запроса, в формате
{scope: [functions]}. Ключscope— имя шаблона, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
after_request().Эта структура данных внутренняя. Ее не следует изменять напрямую, и ее формат может измениться в любое время.
-
app_context_processor(f) -
Как
Flask.context_processor(), но для шаблона. Такая функция выполняется каждый запрос, даже если за пределами шаблона.
-
app_errorhandler(code) -
Как
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(), но применимо ко всему приложению.
-
app_url_value_preprocessor(f) -
То же, что и
url_value_preprocessor(), но применимо ко всему приложению.
-
before_app_first_request(f) -
Как
Flask.before_first_request(). Такая функция выполняется перед первым запросом к приложению.
-
before_app_request(f) -
Как
Flask.before_request(). Такая функция выполняется перед каждым запросом, даже если она находится вне голубого плана.- Параметры
-
-
f (Callable[[], Optional[Объединение[Ответ, строка, байты, Словарь[строка, любой], Итератор[строка], Итератор[байты], Кортеж[Объединение[Ответ, строка, байты, Словарь[строка, любой], Итератор[строка], Итератор[байты]], Объединение[Заголовки, Словарь[строка, Объединение[строка, Список[строка], Кортеж[строка, ...]]]], Список[Кортеж[строка, Объединение[строка, Список[строка], Кортеж[строка, ...]]]]], Кортеж[Объединение[Ответ, строка, байты, Словарь[строка, любой], Итератор[строка], Итератор[байты]], целое число], Кортеж[Объединение[Ответ, строка, байты, Словарь[строка, любой], Итератор[строка], Итератор[байты]], целое число, Объединение[Заголовки, Словарь[строка, Объединение[строка, Список[строка], Кортеж[строка, ...]]], Список[Кортеж[строка, Объединение[строка,
-
-
Callable[[], Optional[Объединение[Response, строка, байты, Словарь[строка, Любой], Итератор[строка], Итератор[байты], Кортеж[Объединение[Response, строка, байты, Словарь[строка, Любой], Итератор[строка], Итератор[байты]], Объединение[Headers, Словарь[строка, Объединение[строка, Список[строка], Кортеж[строка, …]]], Список[Кортеж[строка, Объединение[строка, Список[строка], Кортеж[строка, …]]]]]], Кортеж[Объединение[Response, строка, байты, Словарь[строка, Любой], Итератор[строка], Итератор[байты]], целое число], Кортеж[Объединение[Response, строка, байты, Словарь[строка, Любой], Итератор[строка], Итератор[байты]], целое число, Объединение[Headers, Словарь[строка, Объединение[строка, Список[строка], Кортеж[строка, …]]], Список[Кортеж[строка, Объединение[строка, Список[строка], Кортеж[строка, …]]]]]], WSGIApplication]]]
-
-
before_request(f) -
Зарегистрировать функцию, которая будет выполняться перед каждым запросом.
Например, это можно использовать для открытия подключения к базе данных или для загрузки пользователя, авторизованного в сессии.
@app.before_request def load_user(): if "user_id" in session: g.user = db.session.get(session["user_id"])Функция будет вызвана без каких-либо аргументов. Если она возвращает значение, отличное от
None, это значение обрабатывается так, как если бы это было возвращаемое значение из представления, и дальнейшая обработка запроса останавливается.- Параметры
-
-
f (Callable[[], Optional[Объединение[Response, строка, байты, Словарь[строка, Любое], Итератор[строка], Итератор[байты], Кортеж[Объединение[Response, строка, байты, Словарь[строка, Любое], Итератор[строка], Итератор[байты]], Объединение[Заголовки, Словарь[строка, Объединение[строка, Список[строка], Кортеж[строка, ...]]]], Список[Кортеж[строка, Объединение[строка, Список[строка], Кортеж[строка, ...]]]]]], Кортеж[Объединение[Response, строка, байты, Словарь[строка, Любое], Итератор[строка], Итератор[байты]], целое], Кортеж[Объединение[Response, строка, байты, Словарь[строка, Любое], Итератор[строка], Итератор[байты]], целое, Объединение[Заголовки, Словарь[строка, Объединение[строка, Список[строка], Кортеж[строка, ...]]], Список[Кортеж[строка, Объединение[строка,
-
-
Callable[[], Optional[Объединение[Ответ, строка, байты, Словарь[строка, Любое], Итератор[строка], Итератор[байты], Кортеж[Объединение[Ответ, строка, байты, Словарь[строка, Любое], Итератор[строка], Итератор[байты]], Объединение[Headers, Словарь[строка, Объединение[строка, Список[строка], Кортеж[строка, …]]], Список[Кортеж[строка, Объединение[строка, Список[строка], Кортеж[строка, …]]]]]], Кортеж[Объединение[Ответ, строка, байты, Словарь[строка, Любое], Итератор[строка], Итератор[байты]], целое число], Кортеж[Объединение[Ответ, строка, байты, Словарь[строка, Любое], Итератор[строка], Итератор[байты]], целое число, Объединение[Headers, Словарь[строка, Объединение[строка, Список[строка], Кортеж[строка, …]]], Список[Кортеж[строка, Объединение[строка, Список[строка], Кортеж[строка, …]]]]]], WSGIApplication]]]
-
-
before_request_funcs: t.Dict[AppOrBlueprintKey, t.List[BeforeRequestCallable]] -
Структура данных функций, которые вызываются в начале каждого запроса, в формате
{scope: [functions]}. Ключscope— имя модуля, для которого активны эти функции, илиNoneдля всех запросов.Чтобы зарегистрировать функцию, используйте декоратор
before_request().Эта структура данных внутренняя. Не следует изменять её напрямую, её формат может измениться в любое время.
-
cli -
Группа команд Click для регистрации команд CLI для этого объекта. Команды доступны из команды
flaskпосле обнаружения приложения и регистрации модулей.
-
context_processor(f) -
Регистрирует функцию обработки контекста шаблона.
-
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: t.Dict[AppOrBlueprintKey, t.Dict[t.Optional[int], t.Dict[t.Type[Exception], '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Журнал изменений
Введено в версии 0.7: Используйте
register_error_handler()вместо прямого измененияerror_handler_specдля обработчиков ошибок на уровне приложения.Введено в версии 0.7: Теперь также можно регистрировать обработчики для пользовательских типов исключений, которые не обязательно должны быть подклассами класса
HTTPException.
-
get(rule, **options) -
Сокращение для
route()сmethods=["GET"].Журнал изменений
Введено в версии 2.0.
-
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: Optional[jinja2.loaders.FileSystemLoader] -
Загрузчик Jinja для шаблонов этого объекта. По умолчанию это класс
jinja2.loaders.FileSystemLoaderдляtemplate_folder, если он задан.Changelog
Новое в версии 0.5.
-
json_decoder: t.Optional[t.Type[JSONDecoder]] = None -
Локальный класс декодера JSON для использования в Blueprint. Установлено в
Noneдля использования декодера приложенияjson_decoder.
-
json_encoder: t.Optional[t.Type[JSONEncoder]] = None -
Локальный класс кодировщика JSON для использования в Blueprint. Установлено в
Noneдля использования кодировщика приложенияjson_encoder.
-
make_setup_state(app, options, first_registration=False) -
Создает экземпляр объекта
BlueprintSetupState(), который позже передаётся в функции обратного вызова регистрации. Подклассы могут переопределять его, чтобы возвращать подкласс состояния настройки.- Параметры
- Тип возвращаемого значения
-
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"].Changelog
Новое в версии 2.0.
-
post(rule, **options) -
Сокращение для
route()сmethods=["POST"].Changelog
Новое в версии 2.0.
-
put(rule, **options) -
Сокращение для
route()сmethods=["PUT"].Changelog
Новое в версии 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
Changelog
Изменено в версии 2.0.1: Вложенные модули регистрируются с их точечной записью. Это позволяет различным модулям с одинаковыми именами быть вложенными в разных местах.
Изменено в версии 2.0.1: Параметр
nameможет быть использован для изменения (предварительно точечного) имени, с которым регистрируется модуль. Это позволяет одному и тому же модулю быть зарегистрированным несколько раз с уникальными именами дляurl_for.Изменено в версии 2.0.1: Регистрация одного и того же модуля с одинаковым именем несколько раз устарела и станет ошибкой в Flask 2.1.
-
register_blueprint(blueprint, **options) -
Зарегистрировать
Blueprintв этом модуле. Аргументы ключевого слова, переданные в этот метод, переопределят значения по умолчанию, заданные в модуле.Changelog
Изменено в версии 2.0.1: Параметр
nameможет быть использован для изменения (предварительно точечного) имени, с которым регистрируется модуль. Это позволяет одному и тому же модулю быть зарегистрированным несколько раз с уникальными именами дляurl_for.Добавлено в версии 2.0.
- Параметры
-
- blueprint (flask.blueprints.Blueprint) –
- options (Any) –
- Тип возвращаемого значения
-
None
-
register_error_handler(code_or_exception, f) -
Альтернативная функция присоединения ошибок к декоратору
errorhandler(), которая более проста в использовании для случаев без использования декораторов.Changelog
Добавлено в версии 0.7.
-
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задан.Changelog
Добавлено в версии 0.5.
-
property static_folder: Optional[str] -
Абсолютный путь к настроенной папке со статическими файлами.
Noneесли папка со статическими файлами не задана.
-
property static_url_path: Optional[str] -
Префикс URL, к которому будет доступен статический маршрут.
Если он не был настроен во время инициализации, он выводится из
static_folder.
-
teardown_app_request(f) -
Аналогично
Flask.teardown_request(), но для модуля. Такая функция выполняется при разборе каждого запроса, даже если она находится вне модуля.- Параметры
-
f (Callable[[Optional[BaseException]], None]) –
- Тип возвращаемого значения
-
Callable[[Optional[BaseException]], None]
-
-
teardown_request(f) -
Зарегистрировать функцию, которая будет выполняться в конце каждого запроса, независимо от того, была ли исключение или нет. Эти функции выполняются при извлечении контекста запроса, даже если фактически запрос не был выполнен.
Пример:
ctx = app.test_request_context() ctx.push() ... ctx.pop()
Когда
ctx.pop()выполняется в приведенном выше примере, функции завершения вызываются непосредственно перед тем, как контекст запроса перемещается из стека активных контекстов. Это становится актуальным, если вы используете такие конструкции в тестах.Функции завершения должны избегать повышения исключений. Если они выполняют код, который может привести к ошибке, они должны будут обернуть выполнение этого кода в операторы try/except и регистрировать любые ошибки.
Когда функция завершения была вызвана из-за исключения, ей будет передан объект ошибки.
Возвращаемые значения функций завершения игнорируются.
Debug Note
В режиме отладки Flask не будет сразу завершать запрос при возникновении исключения. Вместо этого он сохранит его активным, чтобы интерактивный отладчик всё ещё мог получить к нему доступ. Это поведение можно контролировать с помощью переменной конфигурации
PRESERVE_CONTEXT_ON_EXCEPTION.- Параметры
-
f (Callable[[Optional[BaseException]], None]) –
- Тип возвращаемого значения
-
Callable[[Optional[BaseException]], None]
-
teardown_request_funcs: t.Dict[AppOrBlueprintKey, t.List[TeardownCallable]] -
Структура данных функций, которые нужно вызывать в конце каждого запроса, даже если возникает исключение, в формате
{scope: [functions]}. Ключscope— имя плагина, для которого активны функции, илиNoneдля всех запросов.Чтобы зарегистрировать функцию, используйте декоратор
teardown_request().Эта структура данных внутренняя. Её не следует изменять напрямую, и её формат может быть изменён в любое время.
-
template_context_processors: t.Dict[AppOrBlueprintKey, t.List[TemplateContextProcessorCallable]] -
Структура данных функций, которые нужно вызывать для передачи дополнительных значений контекста при рендеринге шаблонов, в формате
{scope: [functions]}. Ключscope— имя плагина, для которого активны функции, илиNoneдля всех запросов.Чтобы зарегистрировать функцию, используйте декоратор
context_processor().Эта структура данных внутренняя. Её не следует изменять напрямую, и её формат может быть изменён в любое время.
-
template_folder -
Путь к папке шаблонов, относительно
root_path, для добавления в загрузчик шаблонов.Noneесли шаблоны не должны добавляться.
-
url_default_functions: t.Dict[AppOrBlueprintKey, t.List[URLDefaultCallable]] -
Структура данных функций, которые нужно вызывать для изменения ключевых аргументов при генерации URL-адресов, в формате
{scope: [functions]}. Ключscope— имя плагина, для которого активны функции, илиNoneдля всех запросов.Чтобы зарегистрировать функцию, используйте декоратор
url_defaults().Эта структура данных внутренняя. Её не следует изменять напрямую, и её формат может быть изменён в любое время.
-
url_defaults(f) -
Функция обратного вызова для значений по умолчанию URL для всех функций представления приложения. Она вызывается с именем конечной точки и значениями и должна обновить переданные значения на месте.
-
url_value_preprocessor(f) -
Зарегистрировать функцию предварительной обработки значений URL для всех функций представления в приложении. Эти функции будут вызываться перед функциями
before_request().Функция может изменить значения, полученные из сопоставленного URL, прежде чем передать их в представление. Например, это можно использовать для извлечения общего кода языка и размещения его в
gвместо передачи его в каждое представление.Функции передаются имя конечной точки и словарь значений. Возвращаемое значение игнорируется.
-
url_value_preprocessors: t.Dict[AppOrBlueprintKey, t.List[URLValuePreprocessorCallable]] -
Структура данных функций, которые нужно вызывать для изменения ключевых аргументов, передаваемых в функцию представления, в формате
{scope: [functions]}. Ключscope— имя плагина, для которого активны функции, илиNoneдля всех запросов.Чтобы зарегистрировать функцию, используйте декоратор
url_value_preprocessor().Эта структура данных внутренняя. Её не следует изменять напрямую, и её формат может быть изменён в любое время.
-
view_functions: t.Dict[str, t.Callable] -
Словарь, сопоставляющий имена конечных точек с функциями представлений.
Чтобы зарегистрировать функцию представления, используйте декоратор
route().Эта структура данных внутренняя. Её не следует изменять напрямую, и её формат может быть изменён в любое время.
-
Данные входящего запроса
-
class flask.Request(environ, populate_request=True, shallow=False) -
Объект запроса, используемый по умолчанию в Flask. Запоминает сопоставленный конечную точку и аргументы представления.
Он используется в качестве
request. Если вы хотите заменить объект запроса, можно создать подкласс и установитьrequest_classна ваш подкласс.Объект запроса является подклассом
Requestи предоставляет все атрибуты, определенные Werkzeug, плюс несколько специфичных для Flask.- Параметры
- Тип возвращаемого значения
-
None
-
property accept_charsets: werkzeug.datastructures.CharsetAccept -
Список кодировок символов, поддерживаемых клиентом в виде объекта
CharsetAccept.
-
property accept_encodings: werkzeug.datastructures.Accept -
Список кодировок, которые принимает клиент. Кодировки в терминологии HTTP представляют собой кодировки сжатия, такие как gzip. Для кодировок символов см.
accept_charset.
-
property accept_languages: werkzeug.datastructures.LanguageAccept -
Список языков, которые принимает клиент, в виде объекта
LanguageAccept.
-
property accept_mimetypes: werkzeug.datastructures.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-исключения автоматически перехватываются и преобразуются в ответы вместо отказа.
-
property args: werkzeug.datastructures.MultiDict[str, str] -
Анализированные параметры URL (часть URL после вопросительного знака).
По умолчанию из этой функции возвращается
ImmutableMultiDict. Это можно изменить, установивparameter_storage_classна другой тип. Это может потребоваться, если порядок данных формы важен.
-
property authorization: Optional[werkzeug.datastructures.Authorization] -
Объект
Authorizationв проанализированной форме.
-
property base_url: str -
Аналогично
url, но без строки запроса.
-
property blueprint: Optional[str] -
Зарегистрированное имя текущего проекта.
Будет
None, если конечная точка не является частью проекта, или если сопоставление URL не выполнено или ещё не выполнено.Это не обязательно совпадает с именем, с которым был создан проект. Он мог быть вложен или зарегистрирован с другим именем.
-
property blueprints: List[str] -
Зарегистрированные имена текущего проекта и его родительских проектов.
Будет пустым списком, если текущий проект отсутствует или сопоставление URL не выполнено.
Изменения
Введено в версии 2.0.1.
-
property cache_control: werkzeug.datastructures.RequestCacheControl -
Объект
RequestCacheControlдля входящих заголовков управления кэшем.
-
close() -
Закрывает связанные ресурсы этого объекта запроса. Это закрывает все дескрипторы файлов явно. Вы также можете использовать объект запроса в операторе with, который автоматически закроет его.
Изменения
Введено в версии 0.9.
- Тип возвращаемого значения
-
None
-
content_encoding -
Поле заголовка сущности Content-Encoding используется как модификатор типа носителя. Если оно присутствует, его значение указывает, какие дополнительные кодировки содержимого были применены к телу сущности, и, следовательно, какие механизмы декодирования необходимо применить для получения типа носителя, указанного в поле заголовка Content-Type.
Изменения
Введено в версии 0.9.
-
property content_length: Optional[int] -
Поле заголовка сущности Content-Length указывает размер тела сущности в байтах или, в случае метода HEAD, размер тела сущности, который был бы отправлен, если бы запрос был GET.
-
content_md5 -
Поле заголовка сущности Content-MD5, определенное в RFC 1864, является хэш-суммой MD5 тела сущности с целью обеспечения проверки целостности сообщения (MIC) тела сущности «от начала до конца». (Примечание: MIC подходит для обнаружения случайного изменения тела сущности во время передачи, но не является доказательством защиты от злонамеренных атак.)
Изменения
Введено в версии 0.9.
-
content_type -
Поле заголовка сущности Content-Type указывает тип носителя тела сущности, отправляемого получателю, или, в случае метода HEAD, тип носителя, который был бы отправлен, если бы запрос был GET.
-
property cookies: werkzeug.datastructures.ImmutableMultiDict[str, str] -
dictсо содержимым всех cookie, переданных вместе с запросом.
-
property data: bytes -
Содержит данные входящего запроса в виде строки в том случае, если они были отправлены с типом носителя, который Werkzeug не обрабатывает.
-
date -
Поле заголовка Date обозначает дату и время, в которые было отправлено сообщение, имея такие же семантические значения, как и orig-date в RFC 822.
Изменения
Изменено в версии 2.0: Объект datetime имеет часовой пояс.
-
dict_storage_class
-
property endpoint: Optional[str] -
Конечная точка, которая соответствует URL запроса.
Будет
Noneв случае неудачного сопоставления или если оно ещё не выполнено.В сочетании с
view_argsможет быть использовано для восстановления исходного URL или его модифицированной версии.
-
environ: WSGIEnvironment -
WSGI-среда, содержащая HTTP-заголовки и информацию от WSGI-сервера.
-
property files: werkzeug.datastructures.ImmutableMultiDict[str, werkzeug.datastructures.FileStorage] -
MultiDictобъект, содержащий все загруженные файлы. Каждый ключ вfiles— это имя из<input type="file" name="">. Каждое значение вfiles— это объект WerkzeugFileStorage.По сути, он ведет себя как стандартный файловый объект из Python, за исключением наличия функции
save(), которая позволяет сохранить файл на файловой системе.Обратите внимание, что
filesбудет содержать данные только если метод запроса был POST, PUT или PATCH, и отправленный в запрос<form>имелenctype="multipart/form-data". В противном случае он будет пустым.Для получения дополнительной информации об используемой структуре данных см. документацию
MultiDict/FileStorage.
-
property form: werkzeug.datastructures.ImmutableMultiDict[str, str] -
Параметры формы. По умолчанию из этой функции возвращается
ImmutableMultiDict. Это можно изменить, установивparameter_storage_classна другой тип. Это может потребоваться, если порядок данных формы важен.Пожалуйста, учтите, что загрузки файлов не попадут сюда, а вместо этого окажутся в атрибуте
files.Изменения
Изменено в версии 0.9: Ранее в Werkzeug 0.9 это содержало данные формы только для запросов POST и PUT.
-
form_data_parser_class -
Псевдоним для
werkzeug.formparser.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(), и его возвращаемое значение используется как возвращаемое значение. По умолчанию это вызывает ошибку 400 Bad Request.- Параметры
- Тип возвращаемого значения
Изменено в версии 2.1: Вызывать ошибку 400, если тип содержимого неверный.
-
headers -
Заголовки, полученные с запросом.
-
property host: str -
Имя хоста, к которому был обращён запрос, включая порт, если он нестандартный. Валидируется с помощью
trusted_hosts.
-
property host_url: str -
Схема и хост URL запроса.
-
-
property if_match: werkzeug.datastructures.ETags -
Объект, содержащий все значения etag в заголовке
If-Match.- Тип возвращаемого значения
-
property if_modified_since: Optional[datetime.datetime] -
Разбор заголовка
If-Modified-Sinceв виде объекта datetime.Изменения
Изменено в версии 2.0: Объект datetime учитывает часовой пояс.
-
property if_none_match: werkzeug.datastructures.ETags -
Объект, содержащий все значения etag в заголовке
If-None-Match.- Тип возвращаемого значения
-
property if_range: werkzeug.datastructures.IfRange -
Разбор заголовка
If-Range.Изменения
Изменено в версии 2.0:
IfRange.dateучитывает часовой пояс.Добавлена в версии 0.7.
-
property if_unmodified_since: Optional[datetime.datetime] -
Разбор заголовка
If-Unmodified-Sinceв виде объекта datetime.Изменения
Изменено в версии 2.0: Объект datetime учитывает часовой пояс.
-
input_stream -
Поток ввода WSGI.
В целом, не рекомендуется использовать этот метод, так как можно легко выйти за пределы границ. Используйте
streamвместо этого.
-
property is_json: bool -
Проверка, соответствует ли тип содержимого данным 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: Optional[Any] -
Разбор данных JSON, если
mimetypeуказывает на JSON (application/json, см.is_json).Вызывает
get_json()с аргументами по умолчанию.Если тип содержимого запроса не
application/json, будет возбуждено исключение 400 Bad Request.Изменено в версии 2.1: Возбуждает ошибку 400, если тип содержимого некорректен.
-
list_storage_class -
Псевдоним для
werkzeug.datastructures.ImmutableList
-
make_form_data_parser() -
Создает анализатор данных формы. Инициализирует
form_data_parser_classс некоторыми параметрами.Изменения
Добавлена в версии 0.8.
- Тип возвращаемого значения
-
property max_content_length: Optional[int] -
Только для чтения представление конфигурационного ключа
MAX_CONTENT_LENGTH.
-
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, то params будут{'charset': 'utf-8'}.
-
on_json_loading_failed(e) -
Вызывается, если
get_json()завершается с ошибкой и не подавляется.Если этот метод возвращает значение, оно используется в качестве возвращаемого значения для
get_json(). По умолчанию генерируется исключениеBadRequest.- Параметры
-
e (Optional[ValueError]) – Если произошла ошибка при парсинге, это исключение. Оно будет
Noneесли тип содержимого неapplication/json. - Тип возвращаемого значения
-
origin -
Хост, откуда произошел запрос. Установите
access_control_allow_originв ответе, чтобы указать разрешенные источники.
-
parameter_storage_class -
Псевдоним для
werkzeug.datastructures.ImmutableMultiDict
-
path -
Часть пути URL после
root_path. Это путь, используемый для маршрутизации внутри приложения.
-
property pragma: werkzeug.datastructures.HeaderSet -
Поле заголовка Pragma используется для включения реализующих специфических директив, которые могут применяться к любому получателю в цепочке запрос/ответ. Все директивы Pragma задают необязательное поведение с точки зрения протокола; однако, некоторые системы МОГУТ потребовать, чтобы это поведение соответствовало этим директивам.
-
query_string -
Часть URL после символа “?”. Это значение в сыром виде, для парсированных значений используйте
args.
-
property range: Optional[werkzeug.datastructures.Range] -
Разбор заголовка
Range.Изменения
Добавлена в версии 0.7.
- Тип возвращаемого значения
-
-
referrer -
Поле заголовка запроса Referer позволяет клиенту указать для сервера адрес (URI) ресурса, из которого был получен Request-URI (ссылка, хотя поле заголовка написано с ошибкой).
-
remote_addr -
Адрес клиента, отправившего запрос.
-
remote_user -
Если сервер поддерживает аутентификацию пользователя и сценарий защищен, это атрибут содержит имя пользователя, под которым пользователь авторизовался.
-
root_path -
Префикс, под которым установлено приложение, без конечного слэша.
pathследует за этим.
-
property root_url: str -
Схема, хост и корневой путь URL запроса. Это корень, с которого осуществляется доступ к приложению.
-
routing_exception: Optional[Exception] = 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. Полезно для предотвращения изменения потока из middleware.
-
property stream: IO[bytes] -
Если входные данные формы не были закодированы с известным типом MIME, данные хранятся в этом потоке без изменений для потребления. Чаще всего лучше использовать
data, который предоставит эти данные в виде строки. Поток возвращает данные только один раз.В отличие от
input_streamэтот поток надёжно защищает от случайного чтения за пределы длины входных данных. Werkzeug всегда будет обращаться к этому потоку для чтения данных, что позволяет обернуть этот объект потоком, который выполняет фильтрацию.Changelog
Изменено в версии 0.9: Этот поток теперь всегда доступен, но может быть использован парсером формы позже. Ранее поток устанавливался только если разбора не происходило.
-
property url: str -
Полный URL запроса со схемой, хостом, корневым путем, путем и строкой запроса.
-
property url_charset: str -
Кодировка символов, которая предполагается для URL. По умолчанию соответствует значению
charset.Changelog
Добавлено в версии 0.6.
-
property url_root: str -
Псевдоним для
root_url. URL со схемой, хостом и корневым путем. Например,https://example.com/app/.
-
url_rule: Optional[Rule] = None -
Внутреннее правило URL, которое соответствовало запросу. Это может быть полезно для проверки разрешённых методов для URL из обработчика до/после (
request.url_rule.methods) и т. п. Однако, если метод запроса был недопустим для правила URL, допустимый список доступен вrouting_exception.valid_methods(атрибут исключения WerkzeugMethodNotAllowed), так как запрос никогда не был связан во внутренней среде.Changelog
Добавлено в версии 0.6.
-
property user_agent: werkzeug.user_agent.UserAgent -
Пользовательский агент. Используйте
user_agent.stringдля получения значения заголовка. Установитеuser_agent_classна подклассUserAgent, чтобы предоставить разбор для других свойств или других расширенных данных.Changelog
Изменено в версии 2.0: Встроенный парсер устарел и будет удалён в Werkzeug 2.1. Необходимо установить подкласс
UserAgentдля разбора данных из строки.
-
user_agent_class -
Псевдоним
werkzeug.user_agent.UserAgent
-
property values: werkzeug.datastructures.CombinedMultiDict[str, str] -
werkzeug.datastructures.CombinedMultiDict, которая объединяетargsиform.Для GET-запросов присутствуют только
args, а неform.Changelog
Изменено в версии 2.0: Для GET-запросов присутствуют только
args, а неform.
-
view_args: Optional[Dict[str, Any]] = None -
Словарь аргументов представления, которые соответствовали запросу. Если при сопоставлении произошла ошибка, это будет
None.
-
property want_form_data_parsed: bool -
Trueесли метод запроса несёт содержимое. По умолчанию это true, если отправленContent-Type.Changelog
Добавлено в версии 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.- Параметры
- Тип возвращаемого значения
-
None
-
accept_ranges -
Заголовок
Accept-Ranges. Несмотря на то, что имя указывает на поддержку нескольких значений, должно быть только одно строковое значение.Общие значения
'bytes'и'none'.Журнал изменений
Добавлен в версии 0.7.
-
property access_control_allow_credentials: bool -
Указывает, могут ли данные аутентификации быть разделены браузером с кодом JavaScript. В рамках предварительного запроса он указывает, могут ли данные аутентификации использоваться в запросе к другому источнику.
-
access_control_allow_headers -
Какие заголовки могут быть отправлены с запросом к другому источнику.
-
access_control_allow_methods -
Какие методы могут использоваться для запроса к другому источнику.
-
access_control_allow_origin -
Происхождение или ‘*’ для любого происхождения, которое может делать запросы к другому источнику.
-
access_control_expose_headers -
Какие заголовки могут быть разделены браузером с кодом JavaScript.
-
access_control_max_age -
Максимальное время в секундах, на которое могут кешироваться настройки контроля доступа.
-
add_etag(overwrite=False, weak=False) -
Добавить тег для текущего ответа, если его еще нет.
Журнал изменений
Изменено в версии 2.0: Для генерации значения используется SHA-1. MD5 может быть недоступен в некоторых средах.
-
age -
Поле заголовка ответа Age указывает оценку отправителем времени, прошедшего с момента создания ответа (или его перепроверки) на сервере происхождения.
Значения Age — это целые числа без знака в десятичной форме, представляющие время в секундах.
-
property allow: werkzeug.datastructures.HeaderSet -
Поле сущностного заголовка Allow перечисляет набор методов, поддерживаемых ресурсом, идентифицируемым Request-URI. Цель этого поля — информировать получателя о допустимых методах, связанных с ресурсом. Заголовок Allow ОБОЯЗАТЕЛЬНО должен присутствовать в ответе 405 (Method Not Allowed).
-
property cache_control: werkzeug.datastructures.ResponseCacheControl -
Общий заголовок Cache-Control используется для указания директив, которые должны выполняться всеми механизмами кэширования в цепочке запроса/ответа.
-
calculate_content_length() -
Возвращает длину содержимого, если она доступна, или
Noneв противном случае.
-
call_on_close(func) -
Добавляет функцию в внутренний список функций, которые должны вызываться при закрытии ответа. Начиная с версии 0.7, эта функция также возвращает переданную функцию, чтобы это можно было использовать как декоратор.
Журнал изменений
Добавлен в версии 0.6.
-
close() -
Закрыть обернутый ответ, если это возможно. Вы также можете использовать объект в операторе with, который автоматически закроет его.
Журнал изменений
Добавлен в версии 0.9: Теперь может быть использован в операторе with.
- Тип возвращаемого значения
-
None
-
content_encoding -
Поле сущностного заголовка Content-Encoding используется как модификатор типа носителя. При наличии его значение указывает, какие дополнительные кодировки содержимого были применены к телу сущности, и, следовательно, какие механизмы декодирования должны быть применены для получения типа носителя, указанного в заголовке Content-Type.
-
property content_language: werkzeug.datastructures.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: werkzeug.datastructures.ContentRange -
Заголовок
Content-Rangeв виде объектаContentRange. Доступен даже если заголовок не задан.Changelog
Добавлено в версии 0.7.
-
property content_security_policy: werkzeug.datastructures.ContentSecurityPolicy -
Заголовок
Content-Security-Policyв виде объектаContentSecurityPolicy. Доступен даже если заголовок не задан.Заголовок Content-Security-Policy добавляет дополнительный уровень безопасности для обнаружения и смягчения определенных типов атак.
-
property content_security_policy_report_only: werkzeug.datastructures.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: Union[bytes, str] -
Дескриптор, который вызывает
get_data()иset_data().
-
date -
Поле общего заголовка Date представляет дату и время, в которые было создано сообщение, имеющее такие же семантические значения, как и orig-date в RFC 822.
Changelog
Изменено в версии 2.0: Объект datetime имеет часовой пояс.
-
delete_cookie(key, path='/', domain=None, secure=False, httponly=False, samesite=None) -
Удаляет cookie. Если ключ не существует, выполняется без ошибок.
- Параметры
-
- ключ (str) – ключ (имя) cookie для удаления.
- путь (str) – если cookie, который нужно удалить, был ограничен путем, путь должен быть определен здесь.
- домен (Optional[str]) – если cookie, который нужно удалить, был ограничен доменом, этот домен должен быть определен здесь.
-
безопасный (bool) – Если
True, cookie будет доступен только по HTTPS. - httponly (bool) – запретить доступ JavaScript к cookie.
- samesite (Optional[str]) – ограничить область действия 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 вызываемые объекты в объекты ответов, если указана среда:
# convert a Werkzeug response object into an instance of the # MyResponseClass subclass. response = MyResponseClass.force_type(response) # convert any WSGI application into a response object response = MyResponseClass.force_type(response, environ)
Это особенно полезно, если вы хотите обработать ответы на главном диспетчере и использовать функциональность, предоставляемую вашим подклассом.
Помните, что это может изменить объекты ответов на месте, если это возможно!
-
freeze() -
Подготовить объект ответа для сериализации. Выполняет следующие действия:
- Буферизует ответ в список, игнорируя
implicity_sequence_conversionиdirect_passthrough. - Устанавливает заголовок
Content-Length. - Генерирует заголовок
ETagесли он не задан.
Изменено в версии 2.1: Параметр
no_etagудален.Changelog
Изменено в версии 2.0: Добавлен заголовок
ETag, параметрno_etagустарел и будет удален в Werkzeug 2.1.Изменено в версии 0.6: Устанавливается заголовок
Content-Length.- Тип возвращаемого значения
-
None
- Буферизует ответ в список, игнорируя
-
-
classmethod from_app(app, environ, buffered=False) -
Создайте новый объект ответа из выходных данных приложения. Это лучше всего работает, если вы передаёте ему приложение, которое постоянно возвращает генератор. Иногда приложения могут использовать вызываемый
write()метод, возвращаемый функциейstart_response. Это пытается автоматически разрешить такие граничные случаи. Но если вы не получаете ожидаемые выходные данные, вы должны установитьbufferedв значениеTrue, что обеспечивает буферизацию.
-
get_app_iter(environ) -
Возвращает итератор приложения для данной среды. В зависимости от метода запроса и текущего кода состояния возвращаемое значение может быть пустым ответом, а не тем, что содержится в ответе.
Если метод запроса равен
HEADили код состояния находится в диапазоне, где спецификация HTTP требует пустого ответа, возвращается пустая итерируемая последовательность.Changelog
Новая функция в версии 0.6.
-
get_data(as_text=False) -
Строковое представление тела ответа. Каждый раз, когда вы вызываете это свойство, итерируемая последовательность ответа кодируется и сжимается. Это может привести к нежелательному поведению при работе с большими данными.
Это поведение можно отключить, установив
implicit_sequence_conversionвFalse.Если
as_textустановлено вTrue, возвращаемое значение будет декодированной строкой.Changelog
Новая функция в версии 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-адресом среды. Кроме того, длина содержимого автоматически устанавливается в ноль для определённых кодов состояния.
Changelog
Изменено в версии 0.6: Ранее эта функция называлась
fix_headersи изменяла объект ответа непосредственно. Также начиная с версии 0.6, IRIs в заголовках расположения и расположения содержимого обрабатываются должным образом.Также начиная с версии 0.6, Werkzeug попытается установить длину содержимого, если сможет это сделать самостоятельно. Это происходит в случае, если все строки в итерируемой последовательности ответа уже закодированы, а итерируемая последовательность буферизована.
- Параметры
-
environ (WSGIEnvironment) – среда WSGI запроса.
- Возвращает
-
возвращает новый объект
Headers. - Тип возвращаемого значения
-
get_wsgi_response(environ) -
Возвращает окончательный ответ WSGI в виде кортежа. Первый элемент кортежа — итерируемая последовательность приложения, второй — код состояния, а третий — список заголовков. Возвращаемый ответ создаётся специально для данной среды. Например, если метод запроса в среде WSGI равен
'HEAD', ответ будет пустым, и будут присутствовать только заголовки и код состояния.Changelog
Новая функция в версии 0.6.
-
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: Optional[Any] -
Разложенные данные 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) -
Устанавливает условие для ответа относительно запроса. Этот метод лучше всего работает, если для ответа уже определён etag. Метод
add_etagможно использовать для этого. Если вызывается без etag, устанавливается только заголовок даты.Не выполняет никаких действий, если метод запроса в запросе или окружении — не GET или HEAD.
Для оптимальной производительности при обработке запросов range рекомендуется, чтобы ваш объект данных ответа реализовывал методы
seekable,seekиtell, как описано вio.IOBase. Объекты, возвращаемыеwrap_file(), автоматически реализуют эти методы.Не удаляет тело ответа, так как функция
__call__()делает это автоматически.Возвращает self, чтобы вы могли сделать
return resp.make_conditional(req), но изменяет объект на месте.- Параметры
-
- request_or_environ (Объединение[WSGIEnvironment, Запрос]) – объект запроса или WSGI-среда, используемые для создания условия для ответа.
-
accept_ranges (Объединение[bool, строка]) – Этот параметр определяет значение заголовка
Accept-Ranges. ЕслиFalse(по умолчанию), заголовок не устанавливается. ЕслиTrue, он будет установлен в"bytes". ЕслиNone, он будет установлен в"none". Если это строка, она будет использоваться как значение. -
complete_length (Необязательный[целое число]) – Будет использоваться только в допустимых запросах Range. Он установит значение полной длины
Content-Rangeи вычислит реальное значениеContent-Length. Этот параметр обязателен для успешного завершения запросов Range.
- Исключения
-
RequestedRangeNotSatisfiable, если заголовокRangeне может быть проанализирован или удовлетворён. - Тип возвращаемого значения
Changelog
Изменено в версии 2.0: Обработка диапазонов пропускается, если длина равна 0, вместо вывода ошибки 416 Range Not Satisfiable.
-
make_sequence() -
Преобразование итератора ответа в список. По умолчанию это происходит автоматически при необходимости. Если
implicit_sequence_conversionотключен, этот метод не вызывается автоматически, и некоторые свойства могут вызывать исключения. Это также кодирует все элементы.Changelog
Добавлена в версии 0.6.
- Тип возвращаемого значения
-
Ничего
-
property max_cookie_size: int -
Только для чтения представление конфигурационного ключа
MAX_COOKIE_SIZE.См.
max_cookie_sizeв документации Werkzeug.
-
property mimetype: Optional[str] -
Тип MIME (тип содержимого без кодировки символов и т. д.).
-
property mimetype_params: Dict[str, str] -
Параметры типа MIME в виде словаря. Например, если тип содержимого
text/html; charset=utf-8, параметры будут{'charset': 'utf-8'}.Changelog
Добавлена в версии 0.5.
-
response: t.Union[t.Iterable[str], t.Iterable[bytes]] -
Тело ответа для отправки как WSGI-итерируемый объект. Список строк или байтов представляет ответ фиксированной длины, любой другой итерируемый объект — потоковый ответ. Строки кодируются в байты как UTF-8.
Не устанавливайте простую строку или байты, это сделает отправку ответа очень неэффективной, так как он будет итерировать по одному байту за раз.
-
property retry_after: Optional[datetime.datetime] -
Поле заголовка ответа 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) -
Устанавливает cookie.
Выводится предупреждение, если размер заголовка cookie превышает
max_cookie_size, но заголовок всё равно будет установлен.- Параметры
-
- ключ (str) – ключ (имя) устанавливаемого cookie.
- значение (str) – значение cookie.
-
max_age (Optional[Union[datetime.timedelta, int]]) – должно быть количество секунд, или
None(по умолчанию), если cookie должно действовать только в течение сессии браузера клиента. -
expires (Optional[Union[str, datetime.datetime, int, float]]) – должен быть объект
datetime, или метка времени Unix. - path (Optional[str]) – ограничивает cookie заданным путём, по умолчанию он будет охватывать весь домен.
-
domain (Optional[str]) – если нужно установить cookie для другого домена. Например,
domain=".example.com"установит cookie, доступный для доменаwww.example.com,foo.example.comи т. д. В противном случае cookie будет доступен только для домена, который его установил. -
secure (bool) – Если
True, cookie будет доступен только по HTTPS. - httponly (bool) – Запрещает доступ к cookie через JavaScript.
- samesite (Optional[str]) – Ограничивает область действия cookie, чтобы он присоединялся только к запросам «одного сайта».
- Тип возвращаемого значения
-
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: werkzeug.wrappers.response.ResponseStream -
Итерируемый объект ответа в виде потока только для записи.
-
property vary: werkzeug.datastructures.HeaderSet -
Значение поля Vary указывает набор полей заголовков запроса, которые полностью определяют, пока ответ свеж, может ли кеш использовать ответ для ответа на последующий запрос без перепроверки.
-
property www_authenticate: werkzeug.datastructures.WWWAuthenticate -
Заголовок
WWW-Authenticateв обработанном виде.
-
Сессии
Если вы установили Flask.secret_key (или настраивали его из SECRET_KEY), вы можете использовать сессии в приложениях Flask. Сессия позволяет запоминать информацию от одного запроса к другому. Flask делает это, используя подписанный cookie. Пользователь может просмотреть содержимое сессии, но не может его изменить, если не знает секретный ключ, поэтому убедитесь, что он сложный и не поддаётся угадыванию.
Для доступа к текущей сессии вы можете использовать объект session:
-
class flask.session -
Объект сессии работает почти как обычный словарь, с той разницей, что он отслеживает изменения.
Это прокси. Подробнее см. Замечания о прокси.
Следующие атрибуты представляют интерес:
-
new -
Trueесли сессия новая,Falseв противном случае.
-
modified -
Trueесли объект сессии обнаружил изменение. Обратите внимание, что изменения в изменяемых структурах не обнаруживаются автоматически, в этом случае вам нужно явным образом установить атрибут вTrueсамостоятельно. Вот пример:# this change is not picked up because a mutable object (here # a list) is changed. session['objects'].append(42) # so mark it as modified yourself session.modified = True
-
permanent -
Если установлено в
True, сессия сохраняется в течениеpermanent_session_lifetimeсекунд. По умолчанию 31 день. Если установлено вFalse(что по умолчанию), сессия будет удалена при закрытии браузера пользователем.
-
Интерфейс сессий
Изменения
Введено в версии 0.8.
Интерфейс сессий предоставляет простой способ заменить реализацию сессий, используемую Flask.
-
class flask.sessions.SessionInterface -
Базовый интерфейс, который необходимо реализовать для замены стандартного интерфейса сессий, использующего реализацию securecookie от Werkzeug. Вам нужно реализовать только методы
open_session()иsave_session(), остальные имеют полезные значения по умолчанию, которые вам не нужно менять.Объект сессии, возвращаемый методом
open_session(), должен предоставлять интерфейс, похожий на словарь, а также свойства и методы изSessionMixin. Рекомендуется просто создать подкласс словаря и добавить в него этот миксин:class Session(dict, SessionMixin): passЕсли метод
open_session()возвращаетNone, Flask вызоветmake_null_session()для создания сессии-замены, если поддержка сессий не может работать из-за отсутствия какого-либо требования. По умолчанию создаваемый классNullSessionбудет жаловаться на то, что закрытый ключ не задан.Чтобы заменить интерфейс сессий в приложении, вам нужно просто назначить
flask.Flask.session_interface:app = Flask(__name__) app.session_interface = MySessionInterface()
Несколько запросов с одной и той же сессией могут быть отправлены и обработаны одновременно. При реализации нового интерфейса сессий подумайте, нужно ли синхронизировать чтение или запись в хранилище. Нет гарантии, в каком порядке будут открываться или сохраняться сессии для каждого запроса; это произойдёт в порядке начала и окончания обработки запросов.
Изменения
Новая версия 0.8.
-
get_cookie_domain(app) -
Возвращает домен, который должен быть установлен для куки сессии.
Использует
SESSION_COOKIE_DOMAIN, если он настроен, в противном случае возвращается к определению домена на основеSERVER_NAME.После определения (или если он вообще не задан),
SESSION_COOKIE_DOMAINобновляется, чтобы избежать повторного выполнения логики.
-
get_cookie_httponly(app) -
Возвращает True, если для куки сессии должен быть установлен httponly. В настоящее время возвращает значение конфигурационной переменной
SESSION_COOKIE_HTTPONLY.
-
get_cookie_name(app) -
Возвращает имя куки сессии.
Использует
app.session_cookie_name, которое установлено в значение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 (flask.sessions.SessionMixin) –
- Тип возвращаемого значения
-
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()выполняет проверку типа относительно этого типа.псевдоним
flask.sessions.NullSession
-
-
open_session(app, request) -
Это вызывается в начале каждого запроса после добавления контекста запроса, перед сопоставлением URL.
Это должно вернуть объект, реализующий интерфейс словаря, а также интерфейс
SessionMixin.Это вернёт
Noneдля указания того, что загрузка не удалась по какой-то причине, которая не является непосредственной ошибкой. В этом случае контекст запроса вернётmake_null_session().- Параметры
- Тип возвращаемого значения
-
pickle_based = False -
Флаг, указывающий, использует ли интерфейс сессий механизм pickle. Это может быть использовано расширениями Flask для принятия решения о том, как обращаться с объектом сессии.
Журнал изменений
Новое в версии 0.10.
-
save_session(app, session, response) -
Вызывается в конце каждого запроса после генерации ответа, перед удалением контекста запроса. Пропускается, если
is_null_session()возвращаетTrue.- Параметры
-
- app (Flask) –
- session (flask.sessions.SessionMixin) –
- response (Ответ) –
- Тип возвращаемого значения
-
None
-
should_set_cookie(app, session) -
Используется модулями сессий для определения, должен ли заголовок
Set-Cookieустанавливаться для данного cookie сессии для данного ответа. Если сессия была изменена, cookie устанавливается. Если сессия постоянная и конфигурацияSESSION_REFRESH_EACH_REQUESTимеет значение true, cookie всегда устанавливается.Эта проверка обычно пропускается, если сессия была удалена.
Журнал изменений
Новое в версии 0.11.
- Параметры
-
- app (Flask) –
- session (flask.sessions.SessionMixin) –
- Тип возвращаемого значения
-
-
class flask.sessions.SecureCookieSessionInterface -
Стандартный интерфейс сессий, хранящий сессии в подписанных cookie через модуль
itsdangerous.-
static digest_method(string=b'', *, usedforsecurity=True) -
Функция хэширования, используемая для подписи. По умолчанию это sha1
-
key_derivation = 'hmac' -
Название поддерживаемого itsdangerous метода вывода ключа. По умолчанию это hmac.
-
open_session(app, request) -
Вызывается в начале каждого запроса после добавления контекста запроса, перед сопоставлением URL.
Это должно вернуть объект, реализующий интерфейс словаря, а также интерфейс
SessionMixin.Это вернёт
Noneдля указания того, что загрузка не удалась по какой-то причине, которая не является непосредственной ошибкой. В этом случае контекст запроса вернётmake_null_session().- Параметры
- Тип возвращаемого значения
-
salt = 'cookie-session' -
Соль, которая должна быть применена поверх секретного ключа для подписи сессий, основанных на cookie.
-
save_session(app, session, response) -
Вызывается в конце каждого запроса после генерации ответа, перед удалением контекста запроса. Пропускается, если
is_null_session()возвращаетTrue.- Параметры
-
- app (Flask) –
- session (flask.sessions.SessionMixin) –
- response (Ответ) –
- Тип возвращаемого значения
-
None
-
serializer = <flask.json.tag.TaggedJSONSerializer object> -
Сериализатор Python для полезной нагрузки. По умолчанию используется компактный сериализатор JSON с поддержкой некоторых дополнительных типов Python, таких как объекты datetime или кортежи.
-
session_class -
Псевдоним
flask.sessions.SecureCookieSession
-
-
class flask.sessions.SecureCookieSession(initial=None) -
Базовый класс для сессий, основанных на подписанных куках.
Этот бэкенд сессий установит атрибуты
modifiedиaccessed. Он не может надёжно отслеживать, является ли сессия новой (по сравнению с пустой), поэтомуnewостаётся жёстко закодированным вFalse.- Параметры
-
initial (Any) –
- Тип возвращаемого значения
-
None
-
accessed = False -
заголовок, который позволяет прокси-серверам кэширования кэшировать разные страницы для разных пользователей.
-
get(key, default=None) -
Возвращает значение для ключа, если ключ есть в словаре, иначе возвращает значение по умолчанию.
-
modified = False -
При изменении данных, это устанавливается в
True. Отслеживается только сам словарь сессии; если сессия содержит изменяемые данные (например, вложенный словарь), то это значение необходимо установить вTrueвручную при изменении этих данных. Куки сессии будут записаны в ответ только в том случае, если это значениеTrue.
-
class flask.sessions.NullSession(initial=None) -
Класс, используемый для генерации более понятных сообщений об ошибках, если сессии недоступны. Позволяет чтение пустой сессии только для чтения, но не позволяет производить запись.
- Параметры
-
initial (Any) –
- Тип возвращаемого значения
-
None
-
clear() → None. Remove all items from D.
-
pop(k[, d]) → v, remove specified key and return the corresponding value. -
Если ключ не найден, возвращает значение по умолчанию, если задано; в противном случае, генерирует исключение KeyError.
-
popitem(*args, **kwargs) -
Удаляет и возвращает пару (ключ, значение) в виде кортежа из двух элементов.
Пары возвращаются в порядке LIFO (последний вошел, первый вышел). Вызывает исключение 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 -
Некоторые реализации могут обнаруживать чтение или запись данных сессии и устанавливать это значение при этом. По умолчанию в миксине это значение жёстко закодировано в
True.
-
modified = True -
Некоторые реализации могут обнаруживать изменения в сессии и устанавливать это значение при этом. По умолчанию в миксине это значение жёстко закодировано в
True.
-
property permanent: bool -
Это отражает ключ
'_permanent'в словаре.
-
Замечание
Ключ конфигурации PERMANENT_SESSION_LIFETIME также может быть целым числом начиная с Flask 0.8. Либо обработайте это значение самостоятельно, либо используйте атрибут permanent_session_lifetime в приложении, который автоматически преобразует результат в целое число.
Клиент для тестирования
-
class flask.testing.FlaskClient(*args, **kwargs) -
Ведёт себя как обычный тестовый клиент Werkzeug, но обладает дополнительными знаниями о работе Flask, чтобы отложить очистку стека контекста запроса до конца
withтела при использовании вwithоператоре. Для общей информации о том, как использовать этот класс, обратитесь кwerkzeug.test.Client.Журнал изменений
Изменено в версии 0.12:
app.test_client()включает предопределённую среду по умолчанию, которую можно установить после создания объектаapp.test_client()вclient.environ_base.Базовое использование описано в главе Тестирование приложений Flask.
-
open(*args, buffered=False, follow_redirects=False, **kwargs) -
Генерирует словарь environ из заданных аргументов, выполняет запрос к приложению с использованием этого словаря и возвращает ответ.
- Параметры
-
-
args (Any) – Передаётся в
EnvironBuilderдля создания environ для запроса. Если передан один аргумент, он может быть существующимEnvironBuilderили словарем environ. -
buffered (bool) – Преобразовать итератор, возвращаемый приложением, в список. Если у итератора есть метод
close(), он вызывается автоматически. -
follow_redirects (bool) – Выполнять дополнительные запросы для следования HTTP-редиректам до тех пор, пока не будет возвращён статус, не являющийся редиректом.
TestResponse.historyперечисляет промежуточные ответы. - kwargs (Any) –
-
args (Any) – Передаётся в
- Тип возвращаемого значения
-
TestResponse
Изменено в версии 2.1: Удален параметр
as_tuple.Журнал изменений
Изменено в версии 2.0:
as_tupleустарел и будет удален в Werkzeug 2.1. ИспользуйтеTestResponse.requestиrequest.environвместо него.Изменено в версии 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[flask.sessions.SessionMixin, None, None]
-
Запуск команд CLI
-
class flask.testing.FlaskCliRunner(app, **kwargs) -
Класс
CliRunnerдля тестирования команд CLI приложения Flask. Обычно создаётся с помощьюtest_cli_runner(). См. Запуск команд с помощью CLI Runner.-
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().- Parameters
- Return type
Журнал изменений
Введено в версии 0.10.
-
pop(name, default=<object object>) -
Получение и удаление атрибута по имени. Как
dict.pop().- Parameters
- Return type
Журнал изменений
Введено в версии 0.11.
-
setdefault(name, default=None) -
Получение значения атрибута, если оно присутствует, в противном случае установка и возврат значения по умолчанию. Как
dict.setdefault().- Parameters
- Return type
Журнал изменений
Введено в версии 0.11.
Полезные функции и классы
-
flask.current_app -
Провайдер для обработки текущего запроса приложения. Это полезно для доступа к приложению без необходимости его импорта или если его нельзя импортировать, например, при использовании шаблона фабрики приложения или в бланках и расширениях.
Доступен только при наличии контекста приложения. Это происходит автоматически во время запросов и команд CLI. Можно управлять вручную с помощью
app_context().Это прокси. Дополнительную информацию см. в разделе Примечания о прокси.
-
flask.has_request_context() -
Эта функция используется для проверки наличия контекста запроса. Например, можно воспользоваться информацией о запросе, если объект запроса доступен, но при его отсутствии завершить работу без ошибок.
class User(db.Model): def __init__(self, username, remote_addr=None): self.username = username if remote_addr is None and has_request_context(): remote_addr = request.remote_addr self.remote_addr = remote_addrТакже можно проверить истинность любых объектов, связанных с контекстом (например,
requestилиg):class User(db.Model): def __init__(self, username, remote_addr=None): self.username = username if remote_addr is None and request: remote_addr = request.remote_addr self.remote_addr = remote_addrИзменения
Добавлена в версии 0.7.
- Тип возвращаемого значения
-
flask.copy_current_request_context(f) -
Вспомогательная функция, которая декорирует функцию для сохранения текущего контекста запроса. Это полезно при работе с greenlets. В момент декорации создаётся копия контекста запроса, которая затем подключается при вызове функции. В скопированный контекст запроса также включается текущая сессия.
Пример:
import gevent from flask import copy_current_request_context @app.route('/') def index(): @copy_current_request_context def do_some_work(): # do some work here, it can access flask.request or # flask.session like you would otherwise in the view function. ... gevent.spawn(do_some_work) return 'Regular response'Изменения
Добавлена в версии 0.10.
-
flask.has_app_context() -
Работает так же, как
has_request_context(), но для контекста приложения. Также можно просто проверить объектcurrent_appна истинность.Изменения
Добавлена в версии 0.9.
- Тип возвращаемого значения
-
flask.url_for(endpoint, **values) -
Генерирует URL для указанного конечной точки с указанным методом.
Неизвестные целевой конечной точке аргументы добавляются в сгенерированный URL в качестве параметров запроса. Если значение параметра запроса равно
None, пара полностью пропускается. В случае активных бланков ссылки на тот же бланк можно сократить, добавив перед локальной конечной точкой точку (.).Это ссылается на функцию index, локальную для текущего бланка:
url_for('.index')См. Создание URL.
Значения конфигурации
APPLICATION_ROOTиSERVER_NAMEиспользуются только при генерации URL вне контекста запроса.Для интеграции приложений,
Flaskимеет обработчик, который перехватывает ошибки при создании URL с помощьюFlask.url_build_error_handlers. Функцияurl_forвозвращаетBuildError, если текущее приложение не имеет URL для заданной конечной точки и значений. В противном случае,current_appвызываетurl_build_error_handlers, если оно не равноNone, что может вернуть строку, используемую в качестве результатаurl_for(вместо того, чтобыurl_forпо умолчанию выбрасывать исключениеBuildError), или повторно выбросить исключение. Пример:def external_url_handler(error, endpoint, values): "Looks up an external URL when `url_for` cannot build a URL." # This is an example of hooking the build_error_handler. # Here, lookup_url is some utility function you've built # which looks up the endpoint in some external URL registry. url = lookup_url(endpoint, **values) if url is None: # External lookup did not have a URL. # Re-raise the BuildError, in context of original traceback. exc_type, exc_value, tb = sys.exc_info() if exc_value is error: raise exc_type(exc_value).with_traceback(tb) else: raise error # url_for will use this result, instead of raising BuildError. return url app.url_build_error_handlers.append(external_url_handler)Здесь,
error— это экземплярBuildError, аendpointиvalues— это аргументы, переданные вurl_for. Обратите внимание, что это относится к созданию URL вне текущего приложения, а не к обработке ошибок 404 NotFound.Изменения
Добавлена в версии 0.10: Добавлен параметр
_scheme.Добавлена в версии 0.9: Добавлены параметры
_anchorи_method.Добавлена в версии 0.9: Вызывается
Flask.handle_build_error()дляBuildError.- Параметры
-
- endpoint (str) – конечная точка URL (имя функции)
- values (Any) – переменные аргументы правила URL
-
_external – если установлено в
True, генерируется абсолютный URL. Адрес сервера можно изменить через переменную конфигурацииSERVER_NAME, которая по умолчанию использует заголовокHost, а затем IP-адрес и порт запроса. -
_scheme – строка, определяющая желаемый схему URL. Параметр
_externalдолжен быть установлен вTrueили будет поднята ошибкаValueError. По умолчанию используется схема текущего запроса илиPREFERRED_URL_SCHEME, если контекст запроса недоступен. Также можно установить пустую строку для построения относительных URL-адресов по протоколу. - _anchor – если указано, добавляется как якорь к URL.
- _method – если указано, явно задаёт HTTP-метод.
- Тип возвращаемого значения
-
flask.abort(status, *args, **kwargs) -
Вызывает
HTTPExceptionс заданным кодом состояния или WSGI-приложением.Если указан код состояния, он будет найден в списке исключений и вызовет это исключение. Если передано WSGI-приложение, оно будет обернуто в прокси-исключение WSGI и вызвать его:
abort(404) # 404 Not Found abort(Response('Hello World'))
-
flask.redirect(location, code=302, Response=None) -
Возвращает объект ответа (приложение WSGI), который, при вызове, перенаправляет клиента на целевой URL. Поддерживаемые коды: 301, 302, 303, 305, 307 и 308. 300 не поддерживается, так как это не настоящее перенаправление, а 304, так как это ответ на запрос с заданными заголовками If-Modified-Since.
Изменения
Новая версия 0.10: Теперь можно передать класс, используемый для объекта Response.
Новая версия 0.6: Теперь адрес может быть строкой Unicode, которая кодируется с помощью функции
iri_to_uri().- Параметры
-
- location (str) – адрес, на который должен перенаправить ответ.
- code (int) – код статуса перенаправления. По умолчанию 302.
-
Response (class) – класс Response для использования при создании ответа. По умолчанию
werkzeug.wrappers.Response, если не указано иное.
- Тип возвращаемого значения
-
flask.make_response(*args) -
Иногда необходимо установить дополнительные заголовки в представлении. Поскольку представления не обязаны возвращать объекты ответа, а могут возвращать значение, которое Flask преобразует в объект ответа, становится сложно добавлять к нему заголовки. Данная функция может быть вызвана вместо возвращаемого значения, и вы получите объект ответа, который можно использовать для добавления заголовков.
Если представление выглядело так, и вам нужно добавить новый заголовок:
def index(): return render_template('index.html', foo=42)Теперь вы можете сделать что-то вроде этого:
def index(): response = make_response(render_template('index.html', foo=42)) response.headers['X-Parachutes'] = 'parachutes are cool' return responseЭта функция принимает те же самые аргументы, которые вы можете вернуть из функции представления. Например, это создает ответ с кодом ошибки 404:
response = make_response(render_template('not_found.html'), 404)Другой случай использования этой функции — принудительное преобразование возвращаемого значения функции представления в ответ, что полезно при использовании декораторов представлений:
response = make_response(view_function()) response.headers['X-Parachutes'] = 'parachutes are cool'
Внутри эта функция выполняет следующие действия:
- если не переданы аргументы, создается новый объект ответа
- если передается один аргумент, вызывается
flask.Flask.make_response()с этим аргументом. - если передано более одного аргумента, аргументы передаются в функцию
flask.Flask.make_response()как кортеж.
Изменения
Новая версия 0.6.
-
flask.after_this_request(f) -
Выполняет функцию после этого запроса. Это полезно для изменения объектов ответа. Функции передается объект ответа, и она должна вернуть тот же или новый объект.
Пример:
@app.route('/') def index(): @after_this_request def add_header(response): response.headers['X-Foo'] = 'Parachute' return response return 'Hello World!'Это более полезно, если функцию, отличную от функции представления, нужно изменить ответ. Например, подумайте о декораторе, который хочет добавить некоторые заголовки, не преобразовывая возвращаемое значение в объект ответа.
Изменения
Новая версия 0.9.
-
flask.send_file(path_or_file, mimetype=None, as_attachment=False, download_name=None, attachment_filename=None, conditional=True, etag=True, add_etags=None, last_modified=None, max_age=None, cache_timeout=None) -
Отправляет содержимое файла клиенту.
Первый аргумент может быть путем к файлу или объектом-файлом. Пути предпочтительнее в большинстве случаев, поскольку Werkzeug может обрабатывать файл и получать дополнительную информацию из пути. Передача объекта-файла требует, чтобы файл был открыт в двоичном режиме, и полезна в основном при создании файла в памяти с помощью
io.BytesIO.Никогда не передавайте пути к файлам, предоставленные пользователем. Предполагается, что путь является надёжным, поэтому пользователь может создать путь для доступа к файлу, которого вы не предполагали. Используйте
send_from_directory()для безопасной отправки запрошенных пользователем путей из каталога.Если WSGI-сервер устанавливает
file_wrapperвenviron, он используется; в противном случае используется встроенный оболочка Werkzeug. В качестве альтернативы, если HTTP-сервер поддерживаетX-Sendfile, настройка Flask с помощьюUSE_X_SENDFILE = Trueсообщит серверу отправить указанный путь, что намного эффективнее, чем его чтение в Python.- Параметры
-
- path_or_file (Union[os.PathLike, str, BinaryIO]) – Путь к файлу для отправки, относительно текущей рабочей директории, если указан относительный путь. В качестве альтернативы, объект-файл, открытый в двоичном режиме. Убедитесь, что указатель файла переведён в начало данных.
- mimetype (Optional[str]) – Тип MIME для отправки файла. Если не указан, будет пытаться определить его по имени файла.
- as_attachment (bool) – Указать браузеру, что ему следует предложить сохранить файл вместо отображения.
- download_name (Optional[str]) – Имя по умолчанию, которое браузеры будут использовать при сохранении файла. По умолчанию — имя переданного файла.
-
conditional (bool) – Включить условные и диапазонные ответы на основе заголовков запроса. Требуется передача пути к файлу и
environ. - etag (Union[bool, str]) – Вычислить ETag для файла, что требует передачи пути к файлу. Также может быть строкой для использования вместо вычисления.
- last_modified (Optional[Union[datetime.datetime, int, float]]) – Время последнего изменения файла, в секундах. Если не указано, будет пытаться определить его по пути к файлу.
-
max_age (Optional[Union[int, Callable[[Optional[str]], Optional[int]]]]) – Время, в секундах, в течение которого клиент должен кэшировать файл. Если установлено,
Cache-Controlбудетpublic, в противном случае —no-cache, чтобы предпочесть условный кэширование. - attachment_filename (Optional[str]) –
- add_etags (Optional[bool]) –
- cache_timeout (Optional[int]) –
Изменения
Изменено в версии 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, filename=None, **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 (Union[os.PathLike, str]) – Каталог, в котором
pathдолжен находиться. -
path (Union[os.PathLike, str]) – Путь к файлу для отправки, относительно
directory. -
kwargs (Any) – Аргументы для передачи в
send_file(). - filename (Optional[str]) –
-
directory (Union[os.PathLike, str]) – Каталог, в котором
- Тип возвращаемого значения
Изменения
Изменено в версии 2.0:
pathзаменяет параметрfilename.Добавлена в версии 2.0: Реализация перенесена в Werkzeug. Это сейчас обёртка для передачи некоторых аргументов Flask.
Добавлена в версии 0.5.
-
flask.escape() -
Заменить символы
&,<,>,', и"в строке на безопасные для HTML последовательности. Используйте это, если вам нужно отобразить текст, который может содержать такие символы в HTML.Если у объекта есть метод
__html__, он вызывается, и возвращаемое значение предполагается уже безопасным для HTML.- Параметры
-
s – Объект, который должен быть преобразован в строку и экранирован.
- Возвращает
-
Строка
Markupс экранированным текстом.
-
class flask.Markup(base='', encoding=None, errors='strict') -
Строка, готовая для безопасной вставки в документ HTML или XML, либо потому что она была экранирована, либо потому что она была помечена как безопасная.
Передача объекта в конструктор преобразует его в текст и оборачивает его, чтобы пометить его как безопасный без экранирования. Для экранирования текста используйте метод класса
escape()вместо этого.>>> Markup("Hello, <em>World</em>!") Markup('Hello, <em>World</em>!') >>> Markup(42) Markup('42') >>> Markup.escape("Hello, <em>World</em>!") Markup('Hello <em>World</em>!')Это реализует интерфейс
__html__(), который используют некоторые фреймворки. Передача объекта, реализующего__html__(), обернёт вывод этого метода, отмечая его как безопасный.>>> class Foo: ... def __html__(self): ... return '<a href="/foo">foo</a>' ... >>> Markup(Foo()) Markup('<a href="/foo">foo</a>')Это подкласс
str. У него есть те же методы, но они экранируют свои аргументы и возвращают экземплярMarkup.>>> Markup("<em>%s</em>") % ("foo & bar",) Markup('<em>foo & bar</em>') >>> Markup("<em>Hello</em> ") + "<foo>" Markup('<em>Hello</em> <foo>')-
classmethod escape(s) -
Экранировать строку. Вызывает
escape()и гарантирует, что для подклассов возвращается правильный тип.- Параметры
-
s (Any) –
- Тип возвращаемого значения
-
striptags() -
unescape()разметку, удаляет теги и нормализует пробелы до одиночных пробелов.>>> Markup("Main » <em>About</em>").striptags() 'Main » About'- Тип возвращаемого значения
-
unescape() -
Преобразовать экранированную разметку обратно в строку текста. Это заменяет сущности HTML символами, которые они представляют.
>>> Markup("Main » <em>About</em>").unescape() 'Main » <em>About</em>'- Тип возвращаемого значения
-
Выведение сообщений всплывающим окном
-
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 использует встроенный модуль json для обработки JSON. Он будет использовать текущего голубя или приложения JSON-кодировщик и декодировщик для более легкой настройки. По умолчанию он обрабатывает некоторые дополнительные типы данных:
-
datetime.datetimeиdatetime.dateсериализуются в строки формата RFC 822. Это соответствует формату даты HTTP. -
uuid.UUIDсериализуется в строку. -
dataclasses.dataclassпередаётся вdataclasses.asdict(). -
Markup(или любой объект с методом__html__) вызовет метод__html__для получения строки.
Фильтр Jinja |tojson настроен на использование функции Flask’s dumps(). Фильтр автоматически помещает вывод с маркером |safe. Используйте фильтр для отображения данных внутри тегов <script>.
<script>
const names = {{ names|tosjon }};
renderChart(names, {{ axis_data|tojson }});
</script>
-
flask.json.jsonify(*args, **kwargs) -
Сериализует данные в JSON и помещает их в
Responseс MIME-типом application/json.Использует
dumps()для сериализации данных, ноargsиkwargsобрабатываются как данные, а не как аргументы дляjson.dumps().- Один аргумент: Обрабатывается как единственное значение.
- Несколько аргументов: Обрабатывается как список значений.
jsonify(1, 2, 3)эквивалентноjsonify([1, 2, 3]). - Аргументы с именами (keyword arguments): Обрабатываются как словарь значений.
jsonify(data=data, errors=errors)эквивалентноjsonify({"data": data, "errors": errors}). - Передача как аргументов, так и аргументов с именами (keyword arguments) запрещена, поскольку неясно, что должно произойти.
from flask import jsonify @app.route("/users/me") def get_current_user(): return jsonify( username=g.user.username, email=g.user.email, id=g.user.id, )Возвращает JSON-ответ, похожий на этот:
{ "username": "admin", "email": "admin@localhost", "id": 42 }Вывод по умолчанию не включает отступы и пробелы после разделителей. В режиме отладки или если
JSONIFY_PRETTYPRINT_REGULARимеет значениеTrue, вывод будет отформатирован для лучшей читаемости.Изменения
Изменено в версии 2.0.2:
decimal.Decimalподдерживается путем преобразования в строку.Изменено в версии 0.11: Добавлена поддержка сериализации массивов верхнего уровня. Это вносит риск безопасности в старых браузерах. См. Безопасность JSON.
Добавлено в версии 0.2.
-
flask.json.dumps(obj, app=None, **kwargs) -
Сериализует объект в строку JSON.
Принимает те же аргументы, что и встроенная функция
json.dumps(), с некоторыми значениями по умолчанию из конфигурации приложения.- Параметры
-
- obj (Any) – Объект, подлежащий сериализации в JSON.
- app (Optional[Flask]) – Использование конфигурации этого приложения вместо активного контекста приложения или значений по умолчанию.
-
kwargs (Any) – Дополнительные аргументы, передаваемые в
json.dumps().
- Тип возвращаемого значения
Изменения
Изменено в версии 2.0.2:
decimal.Decimalподдерживается путем преобразования в строку.Изменено в версии 2.0:
encodingустарело и будет удалено в Flask 2.1.Изменено в версии 1.0.3:
appможно передавать напрямую, а не требуя контекста приложения для настройки.
-
flask.json.dump(obj, fp, app=None, **kwargs) -
Сериализует объект в JSON, записанный в файл-объект.
Принимает те же аргументы, что и встроенная функция
json.dump(), с некоторыми значениями по умолчанию из конфигурации приложения.- Параметры
- Тип возвращаемого значения
-
None
Изменения
Изменено в версии 2.0: Запись в двоичный файл и аргумент
encodingустарели и будут удалены в Flask 2.1.
-
flask.json.loads(s, app=None, **kwargs) -
Десериализует объект из строки JSON.
Принимает те же аргументы, что и встроенная функция
json.loads(), с некоторыми значениями по умолчанию из конфигурации приложения.- Параметры
-
- s (str) – Строка JSON для десериализации.
- app (Optional[Flask]) – Использование конфигурации этого приложения вместо активного контекста приложения или значений по умолчанию.
-
kwargs (Any) – Дополнительные аргументы, передаваемые в
json.loads().
- Тип возвращаемого значения
Изменения
Изменено в версии 2.0:
encodingустарело и будет удалено в Flask 2.1. Данные должны быть строкой или байтами UTF-8.Изменено в версии 1.0.3:
appможно передавать напрямую, а не требуя контекста приложения для настройки.
-
flask.json.load(fp, app=None, **kwargs) -
Десериализация объекта из JSON, считанного из объекта файла.
Принимает те же аргументы, что и встроенная функция
json.load(), с некоторыми значениями по умолчанию из конфигурации приложения.- Параметры
- Тип возвращаемого значения
Изменения
Изменено в версии 2.0:
encodingустарело и будет удалено в Flask 2.1. Файл должен быть в текстовом режиме или в двоичном режиме с кодировкой UTF-8.
-
class flask.json.JSONEncoder(*, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, default=None) -
Кодировщик JSON по умолчанию. Обрабатывает дополнительные типы по сравнению со встроенным
json.JSONEncoder.-
datetime.datetimeиdatetime.dateсериализуются в строки формата RFC 822. Это соответствует формату даты HTTP. -
uuid.UUIDсериализуется в строку. -
dataclasses.dataclassпередаётся методуdataclasses.asdict(). -
Markup(или любой объект с методом__html__вызовет метод__html__для получения строки).
Присвойте подкласс этого класса атрибуту
flask.Flask.json_encoderилиflask.Blueprint.json_encoder, чтобы переопределить значение по умолчанию.-
default(o) -
Преобразование
oв сериализуемый в JSON тип. Смотритеjson.JSONEncoder.default(). Python не поддерживает переопределение способа сериализации основных типов, таких какstrилиlist, они обрабатываются до вызова этого метода.
-
-
class flask.json.JSONDecoder(*, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, strict=True, object_pairs_hook=None) -
Декодер JSON по умолчанию.
Это не изменяет поведение встроенного
json.JSONDecoder.Присвойте подкласс этому атрибуту
flask.Flask.json_decoderилиflask.Blueprint.json_decoder, чтобы переопределить значение по умолчанию.
Размеченные JSON
Компактное представление для бес потерной сериализации нестандартных типов JSON. SecureCookieSessionInterface использует это для сериализации данных сеанса, но это может быть полезно и в других местах. Его можно расширить для поддержки других типов.
-
class flask.json.tag.TaggedJSONSerializer -
Сериализатор, который использует систему меток для компактного представления объектов, которые не являются типами JSON. Передаётся как промежуточный сериализатор в
itsdangerous.Serializer.Поддерживаются следующие дополнительные типы:
- Тип возвращаемого значения
-
None
-
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) – перезаписать существующую метку. Если ложь (по умолчанию), генерируется
KeyError. -
index (Optional[int]) – индекс для вставки новой метки в порядке меток. Полезно, когда новая метка является частным случаем существующей метки. Если
None(по умолчанию), метка добавляется в конец порядка.
- Исключения
-
KeyError – если ключ метки уже зарегистрирован и
forceне равно истине. - Тип возвращаемого значения
-
None
-
tag(value) -
Преобразует значение в помеченное представление, если необходимо.
-
class flask.json.tag.JSONTag(serializer) -
Базовый класс для определения меток типов для
TaggedJSONSerializer.- Параметры
-
serializer (TaggedJSONSerializer) –
- Тип возвращаемого значения
-
None
-
check(value) -
Проверяет, должно ли данное значение быть помечено этой меткой.
-
key: Optional[str] = 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) -
Отображает шаблон из папки шаблонов с заданным контекстом.
- Параметры
-
- template_name_or_list (Union[str, jinja2.environment.Template, List[Union[str, jinja2.environment.Template]]]) – имя шаблона для отображения или итерируемый объект с именами шаблонов; будет отображен первый существующий шаблон
- context (Any) – переменные, которые должны быть доступны в контексте шаблона.
- Тип возвращаемого значения
-
flask.render_template_string(source, **context) -
Отображает шаблон из заданной строки исходного кода шаблона с заданным контекстом. Переменные шаблона будут автоматически экранироваться.
-
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вместо этого.- Параметры
- Тип возвращаемого значения
-
None
-
from_envvar(variable_name, silent=False) -
Загружает конфигурацию из переменной окружения, указывающей на файл конфигурации. Это в основном просто сокращение с более приятными сообщениями об ошибках для этой строки кода:
app.config.from_pyfile(os.environ['YOURAPPLICATION_SETTINGS'])
-
from_file(filename, load, silent=False) -
Обновляет значения в конфигурации из файла, загруженного с помощью параметра
load. Загруженные данные передаются методуfrom_mapping().import json app.config.from_file("config.json", load=json.load) import toml app.config.from_file("config.toml", load=toml.load)- Параметры
-
- filename (str) – путь к файлу данных. Это может быть абсолютный путь или путь, относительный к корневому пути конфигурации.
-
load (
Callable[[Reader], Mapping]гдеReaderреализует методread.) – функция, которая принимает дескриптор файла и возвращает отображение загруженных данных из файла. - silent (bool) – игнорировать файл, если он не существует.
- Возвращает
-
Trueесли файл был загружен успешно. - Тип возвращаемого значения
Журнал изменений
Введено в версии 2.0.
-
from_mapping(mapping=None, **kwargs) -
Обновляет конфигурацию, как
update(), игнорируя элементы с ключами, не имеющими заглавных букв. :return: Всегда возвращает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-тип, включая словари и списки.
Конкретные элементы вложенных словарей можно установить, разделяя ключи двойным подчёркиванием (
__). Если промежуточного ключа не существует, он будет инициализирован пустым словарем.- Параметры
-
-
prefix (str) – Загружать переменные окружения, начинающиеся с этого префикса, разделённые подчёркиванием (
_). -
loads (Callable[[str], Any]) – Передавать каждое строковое значение в эту функцию и использовать возвращаемое значение в качестве значения конфигурации. Если возникает какая-либо ошибка, она игнорируется, и значение остаётся строкой. По умолчанию
json.loads().
-
prefix (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) -
Контекст запроса содержит всю информацию, относящуюся к запросу. Он создается в начале запроса и добавляется в
_request_ctx_stack, а затем удаляется в конце. Он создаст адаптер URL и объект запроса для предоставленной среды WSGI.Не пытайтесь использовать этот класс напрямую, вместо этого используйте
test_request_context()иrequest_context()для создания этого объекта.Когда контекст запроса извлекается, он выполнит все функции, зарегистрированные в приложении для выполнения действий при завершении запроса (
teardown_request()).Контекст запроса автоматически извлекается в конце запроса. В режиме отладки контекст запроса сохраняется при возникновении исключений, чтобы интерактивные отладчики могли получить доступ к данным. С версии 0.4 это также можно принудительно выполнить для запросов, которые не завершились ошибкой, и вне
DEBUGрежима. Установив'flask._preserve_context'наTrueв среде WSGI, контекст не будет извлекаться в конце запроса. Это используется, например, методомtest_client()для реализации функции отложенной очистки.Это может быть полезно для юнит-тестов, когда вам нужно сохранить информацию из контекста локально на немного более длительное время. Убедитесь, что в этой ситуации вы правильно
pop()стек, в противном случае ваши юнит-тесты будут утечку памяти.- Параметры
- Тип возвращаемого значения
-
None
-
copy() -
Создает копию контекста запроса с тем же объектом запроса. Это можно использовать для перемещения контекста запроса в другой greenlet. Поскольку фактический объект запроса тот же, это нельзя использовать для перемещения контекста запроса в другую нить, если доступ к объекту запроса не заблокирован.
Изменения
Изменено в версии 1.1: Вместо перезагрузки исходных данных используется текущий объект сессии. Это предотвращает
flask.sessionуказание на устаревший объект.Добавлена в версии 0.10.
- Тип возвращаемого значения
-
match_request() -
Может быть переопределен подклассом для подключения к сопоставлению запроса.
- Тип возвращаемого значения
-
None
-
pop(exc=<object object>) -
Извлекает контекст запроса и отвязывает его. Это также вызовет выполнение функций, зарегистрированных декоратором
teardown_request().Изменения
Изменено в версии 0.9: Добавлен аргумент
exc.- Параметры
-
exc (Optional[BaseException]) –
- Тип возвращаемого значения
-
None
-
push() -
Связывает контекст запроса с текущим контекстом.
- Тип возвращаемого значения
-
None
-
flask._request_ctx_stack -
Внутренний
LocalStack, который содержит экземплярыRequestContext. Обычно вместо стека следует обращаться к проксиrequestиsession. Может быть полезно получить доступ к стеку в расширениях.Все следующие атрибуты присутствуют на каждом уровне стека:
-
app -
активное приложение Flask.
-
url_adapter -
адаптер URL, который использовался для сопоставления запроса.
-
request -
текущий объект запроса.
-
session -
активный объект сессии.
-
g -
объект со всеми атрибутами объекта
flask.g. -
flashes -
внутренняя кэш для сохранённых сообщений.
Пример использования:
from flask import _request_ctx_stack def get_session(): ctx = _request_ctx_stack.top if ctx is not None: return ctx.session -
-
class flask.ctx.AppContext(app) -
Контекст приложения неявно привязывает объект приложения к текущей нити или greenlet, аналогично тому, как
RequestContextпривязывает информацию о запросе. Контекст приложения также неявно создаётся, если контекст запроса создаётся, но приложение не находится в верхней части контекста приложения.- Параметры
-
app (Flask) –
- Тип возвращаемого значения
-
None
-
pop(exc=<object object>) -
Извлекает контекст приложения.
- Параметры
-
exc (Optional[BaseException]) –
- Тип возвращаемого значения
-
None
-
push() -
Связывает контекст приложения с текущим контекстом.
- Тип возвращаемого значения
-
None
-
flask._app_ctx_stack -
Внутренний
LocalStack, который содержит экземплярыAppContext. Обычно вместо стека следует обращаться к проксиcurrent_appиg. Расширения могут получить доступ к контекстам в стеке как к именованному пространству для хранения данных.Изменения
Добавлена в версии 0.9.
-
class flask.blueprints.BlueprintSetupState(blueprint, app, options, first_registration) -
Временный объект для регистрации плагина в приложении. Экземпляр этого класса создаётся методом
make_setup_state()и затем передаётся во все функции обратного вызова регистрации.- Параметры
- Тип возвращаемого значения
-
None
-
add_url_rule(rule, endpoint=None, view_func=None, **options) -
Вспомогательный метод для регистрации правила (и, необязательно, функции представления) в приложении. Конечная точка автоматически префиксруется именем плагина.
-
app -
ссылка на текущее приложение
-
blueprint -
ссылка на плагин, создавший этот объект состояния.
-
first_registration -
Поскольку плагины могут регистрироваться в приложении несколько раз, а не всё нужно регистрировать несколько раз, этот атрибут можно использовать, чтобы узнать, был ли плагин зарегистрирован ранее.
-
options -
словарь со всеми параметрами, переданными методу
register_blueprint().
-
subdomain -
Поддомен, для которого должен быть активен плагин,
Noneв противном случае.
-
url_defaults -
Словарь со значениями по умолчанию для URL, которые были определены с помощью плагина.
-
url_prefix -
Префикс, который должен использоваться для всех URL, определённых в плагине.
Сигналы
Журнал изменений
Новое в версии 0.6.
-
signals.signals_available -
Trueесли система сигнализации доступна. Это так, когда установлен blinker.
Следующие сигналы существуют в Flask:
-
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'Журнал изменений
Новое в версии 0.10.
-
flask.appcontext_popped -
Этот сигнал отправляется при удалении контекста приложения. Отправитель — приложение. Обычно это соответствует сигналу
appcontext_tearing_down.Журнал изменений
Новое в версии 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)Журнал изменений
Новое в версии 0.10.
-
class signals.Namespace -
Псевдоним для
blinker.base.Namespace, если blinker доступен, иначе — пустой класс, создающий фиктивные сигналы. Этот класс доступен для расширений Flask, которые хотят предоставить ту же систему обратного вызова, что и сам Flask.-
signal(name, doc=None) -
Создаёт новый сигнал для этого пространства имён, если blinker доступен, иначе возвращает фиктивный сигнал, у которого метод send не выполняет никаких действий, но вернёт
RuntimeErrorдля всех остальных операций, включая подключение.
-
Базовые представления на основе классов
Журнал изменений
Новое в версии 0.7.
-
class flask.views.View -
Альтернативный способ использования функций представлений. Подкласс должен реализовать
dispatch_request(), который вызывается с аргументами представления из системы маршрутизации URL. Еслиmethodsпредоставлен, методы не нужно явно передавать методуadd_url_rule():class MyView(View): methods = ['GET'] def dispatch_request(self, name): return f"Hello {name}!" app.add_url_rule('/hello/<name>', view_func=MyView.as_view('myview'))Когда вы хотите декорировать подключаемое представление, вам нужно сделать это либо при создании функции представления (обернув возвращаемое значение
as_view()), либо использовать атрибутdecorators:class SecretView(View): methods = ['GET'] decorators = [superuser_required] def dispatch_request(self): ...Декораторы, хранящиеся в списке декораторов, применяются по одному после другого при создании функции представления. Обратите внимание, что вы не можете использовать декораторы на основе классов, так как они декорируют класс представления, а не сгенерированную функцию представления!
-
classmethod as_view(name, *class_args, **class_kwargs) -
Преобразует класс в фактическую функцию представления, которая может использоваться с системой маршрутизации. Внутренне это генерирует функцию на лету, которая будет создавать экземпляр
Viewпри каждом запросе и вызывать методdispatch_request()на нём.Аргументы, передаваемые в
as_view(), передаются конструктору класса.
-
decorators: List[Callable] = [] -
Канонический способ декорирования представлений на основе классов — декорировать возвращаемое значение as_view(). Однако, так как это перемещает части логики из объявления класса в место, где оно подключается к системе маршрутизации.
Вы можете поместить один или несколько декораторов в этот список, и всякий раз, когда функция представления создаётся, результат автоматически декорируется.
Журнал изменений
Новое в версии 0.8.
-
-
dispatch_request() -
Подклассы должны переопределять этот метод для реализации фактического кода представления. Этот метод вызывается со всеми аргументами из правила URL.
- Тип возвращаемого значения
-
Union[Response, str, bytes, Dict[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, Dict[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Dict[str, Union[str, List[str], Tuple[str, …]]], List[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], Tuple[Union[Response, str, bytes, Dict[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes, Dict[str, Any], Iterator[str], Iterator[bytes]], int, Union[Headers, Dict[str, Union[str, List[str], Tuple[str, …]]], List[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], WSGIApplication]
-
methods: Optional[List[str]] = None -
Список методов, которые может обрабатывать это представление.
-
provide_automatic_options: Optional[bool] = None -
Установка этого значения отключает или принудительно включает автоматическую обработку OPTIONS.
-
-
class flask.views.MethodView -
Базовый класс представления, который распределяет запросы по методам соответствующего класса. Например, если вы реализуете метод
get, он будет обрабатывать запросыGET.class CounterAPI(MethodView): def get(self): return session.get('counter', 0) def post(self): session['counter'] = session.get('counter', 0) + 1 return 'OK' app.add_url_rule('/counter', view_func=CounterAPI.as_view('counter'))
-
dispatch_request(*args, **kwargs) -
Подклассы должны переопределить этот метод для реализации фактического кода функции представления. Этот метод вызывается со всеми аргументами из правила URL.
- Параметры
- Тип возвращаемого значения
-
Union[Response, str, bytes, Dict[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, Dict[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Dict[str, Union[str, List[str], Tuple[str, …]]], List[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], Tuple[Union[Response, str, bytes, Dict[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes, Dict[str, Any], Iterator[str], Iterator[bytes]], int, Union[Headers, Dict[str, Union[str, List[str], Tuple[str, …]]], List[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], WSGIApplication]
-
Регистрация маршрутов URL
В целом, есть три способа определения правил для системы маршрутизации:
- Можно использовать декоратор
flask.Flask.route(). - Можно использовать функцию
flask.Flask.add_url_rule(). - Можно напрямую обратиться к внутренней системе маршрутизации Werkzeug, которая представлена как
flask.Flask.url_map.
Переменные части в маршруте могут быть указаны с использованием угловых скобок (/user/<username>). По умолчанию переменная часть в URL принимает любую строку без косой черты, однако можно указать другой преобразователь, используя <converter:name>.
Переменные части передаются функции представления в качестве ключевых аргументов.
Доступны следующие преобразователи:
| принимает любой текст без косой черты (по умолчанию) |
| принимает целые числа |
| как |
| как по умолчанию, но также принимает косые черты |
| сопоставляет один из предоставленных элементов |
| принимает строки UUID |
Пользовательские преобразователи можно определить, используя flask.Flask.url_map.
Вот несколько примеров:
@app.route('/')
def index():
pass
@app.route('/<username>')
def show_user(username):
pass
@app.route('/post/<int:post_id>')
def show_post(post_id):
pass
Важно помнить, как Flask обрабатывает конечные косые черты. Идея заключается в том, чтобы сохранить уникальность каждого URL, поэтому применяются следующие правила:
- Если правило заканчивается косой чертой, а пользователь запрашивает его без косой черты, пользователь автоматически перенаправляется на ту же страницу с добавлением конечной косой черты.
- Если правило не заканчивается конечной косой чертой, а пользователь запрашивает страницу с конечной косой чертой, возникает ошибка 404 "Not Found".
Это согласуется с тем, как веб-серверы обрабатывают статические файлы. Это также позволяет безопасно использовать относительные ссылки.
Вы также можете определить несколько правил для одной функции. Однако они должны быть уникальными. Также можно указать значения по умолчанию. Например, вот определение URL, принимающего необязательную страницу:
@app.route('/users/', defaults={'page': 1})
@app.route('/users/page/<int:page>')
def show_users(page):
pass
Это указывает, что /users/ будет URL для первой страницы, а /users/page/N будет URL для страницы N.
Если URL содержит значение по умолчанию, оно будет перенаправлено на свою более простую форму с перенаправлением 301. В приведенном выше примере /users/page/1 будет перенаправлено на /users/. Если ваш маршрут обрабатывает запросы GET и POST, убедитесь, что маршрут по умолчанию обрабатывает только GET, так как перенаправления не могут сохранить данные формы.
@app.route('/region/', defaults={'id': 1})
@app.route('/region/<int:id>', methods=['GET', 'POST'])
def region(id):
pass
Вот параметры, которые принимают route() и add_url_rule(). Единственное различие состоит в том, что с параметром route функция представления определяется с помощью декоратора вместо параметра view_func.
| правило URL в виде строки |
| точку входа для зарегистрированного правила URL. Flask по умолчанию предполагает, что имя функции представления является именем точки входа, если не указано явно. |
| функция, вызываемая при получении запроса к указанной точке входа. Если она не указана, можно указать функцию позже, сохранив ее в словаре |
| Словарь со значениями по умолчанию для этого правила. Обратитесь к приведенному выше примеру, чтобы узнать, как работают значения по умолчанию. |
| указывает правило для поддомена в случае использования сопоставления поддоменов. Если не указано, предполагается поддомен по умолчанию. |
| опции, которые будут переданы в объект |
Параметры функции представления
Для внутреннего использования функции представления могут иметь некоторые атрибуты, настраивающие поведение, над которым функция представления обычно не имеет контроля. Следующие атрибуты могут быть предоставлены необязательно, чтобы либо переопределить некоторые значения по умолчанию для add_url_rule(), либо изменить общее поведение:
-
__name__: Имя функции по умолчанию используется как точка входа. Если точка входа указана явно, используется это значение. Кроме того, по умолчанию к этому значению будет добавлен префикс имени схемы, что нельзя настроить в самой функции. -
methods: Если методы не указаны при добавлении правила URL, Flask проверит сам объект функции представления, если существует атрибутmethods. Если он существует, он извлечет информацию о методах оттуда. -
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 – если True, то будут добавлены команды run и shell по умолчанию.
-
add_version_option – добавляет опцию
--version. - create_app – необязательный обратный вызов, который получает информацию о скрипте и возвращает загруженное приложение.
-
load_dotenv – Загружает ближайшие файлы
.envи.flaskenvдля установки переменных окружения. Также изменит рабочую директорию на директорию, содержащую первый найденный файл. - set_debug_flag – Устанавливает флаг отладки приложения на основе активной среды
Журнал изменений
Изменено в версии 1.0: Если установлен, python-dotenv будет использоваться для загрузки переменных окружения из файлов
.envи.flaskenv.-
get_command(ctx, name) -
При заданном контексте и имени команды, возвращает объект
Commandесли он существует, в противном случае возвращаетNone.
-
list_commands(ctx) -
Возвращает список имён подкоманд в порядке их отображения.
-
main(*args, **kwargs) -
Способ вызова скрипта со всеми функциями в качестве приложения командной строки. Это всегда завершит приложение после вызова. Если этого не требуется, нужно перехватить
SystemExit.Этот метод также доступен путем непосредственного вызова экземпляра
Command.- Параметры
-
-
args – аргументы, которые должны быть использованы для парсинга. Если не указаны, используется
sys.argv[1:]. -
prog_name – имя программы, которое должно быть использовано. По умолчанию имя программы строится, взяв имя файла из
sys.argv[0]. -
complete_var – переменная окружения, которая управляет поддержкой завершения bash. По умолчанию
"_<prog_name>_COMPLETE"с prog_name в верхнем регистре. -
standalone_mode – поведение по умолчанию – вызов скрипта в режиме автономного выполнения. Click будет обрабатывать исключения и преобразовывать их в сообщения об ошибках, и функция никогда не вернётся, а остановит интерпретатор. Если установлено в
False, они будут переданы вызывающему объекту, а значение возврата этой функции – значение возвратаinvoke(). - windows_expand_args – Расширять шаблоны glob, пользовательскую директорию и переменные окружения в аргументах командной строки в Windows.
-
extra – дополнительные ключевые аргументы передаются конструктору контекста. См.
Contextдля получения дополнительной информации.
-
args – аргументы, которые должны быть использованы для парсинга. Если не указаны, используется
Изменено в версии 8.0.1: Добавлен параметр
windows_expand_argsдля отключения расширения аргументов командной строки в Windows.Изменено в версии 8.0: При использовании аргументов из
sys.argvв Windows расширяются шаблоны glob, пользовательская директория и переменные окружения.Изменено в версии 3.0: Добавлен параметр
standalone_mode.
-
class flask.cli.AppGroup(name=None, commands=None, **attrs) -
Работает аналогично стандартной группе click
Group, но изменяет поведение декоратораcommand()таким образом, что он автоматически оборачивает функции вwith_appcontext().Не следует путать с
FlaskGroup.- Параметры
-
- name (Optional[str]) –
- commands (Optional[Union[Dict[str, click.core.Command], Sequence[click.core.Command]]]) –
- attrs (Any) –
- Тип возвращаемого значения
-
None
-
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 -
Словарь произвольных данных, которые можно связать с этой информацией о скрипте.
-
load_app() -
Загружает приложение Flask (если оно еще не загружено) и возвращает его. Вызов этого метода несколько раз приведет к возврату уже загруженного приложения.
-
-
flask.cli.load_dotenv(path=None) -
Загрузка файлов «dotenv» в порядке приоритета для установки переменных окружения.
Если переменная окружения уже установлена, она не перезаписывается, поэтому более ранние файлы в списке имеют приоритет над более поздними.
Это пустая операция, если python-dotenv не установлен.
- Параметры
-
path – Загрузить файл по этому пути вместо поиска.
- Возвращаемое значение
-
Trueесли был загружен файл.
Журнал изменений
Изменено в версии 2.0: При загрузке файлов env установлено кодирование по умолчанию UTF-8.
Изменено в версии 1.1.0: Возвращает
Falseкогда python-dotenv не установлен, или когда заданный путь не является файлом.Добавлена в версии 1.0.
-
flask.cli.with_appcontext(f) -
Оборачивает обратный вызов, чтобы гарантировать, что он будет выполнен с контекстом приложения скрипта. Если обратные вызовы зарегистрированы непосредственно в объекте
app.cli, то по умолчанию они оборачиваются этой функцией, если это не отключено.
-
flask.cli.pass_script_info(f) -
Помечает функцию так, что экземпляр
ScriptInfoпередаётся в качестве первого аргумента в обратный вызов click.- Параметры
-
f (click.decorators.F) –
- Тип возвращаемого значения
-
click.decorators.F
-
flask.cli.run_command = <Command run> -
Запуск локального сервера разработки.
Этот сервер предназначен только для разработки. Он не обеспечивает стабильность, безопасность или производительность серверов WSGI для производства.
Релоадер и отладчик включены по умолчанию, если FLASK_ENV=development или FLASK_DEBUG=1.
-
flask.cli.shell_command = <Command shell> -
Запуск интерактивной оболочки Python в контексте данного приложения Flask. Приложение заполнит по умолчанию пространство имён этой оболочки в соответствии с её конфигурацией.
Это полезно для выполнения небольших фрагментов управляющего кода без необходимости ручного конфигурирования приложения.
© 2007–2022 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/2.1.x/api/