Spec-Zone.ru › Flask 2.1

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().

Параметры
  • name (Optional[str]) – необязательное имя фильтра, в противном случае используется имя функции.
  • f (Callable[[...], Any]) –
Тип возвращаемого значения

None

add_template_global(f, name=None)

Регистрирует пользовательскую глобальную функцию шаблона. Работает точно так же, как декоратор template_global().

Журнал изменений

В версии 0.10.

Параметры
  • name (Optional[str]) – необязательное имя глобальной функции, в противном случае используется имя функции.
  • f (Callable[[...], Any]) –
Тип возвращаемого значения

None

END_OF_DOCUMENT_MARKER ```
add_template_test(f, name=None)

Зарегистрировать пользовательский тест шаблона. Работает точно так же, как декоратор template_test().

Changelog

Новое в версии 0.10.

Параметры
  • name (Optional[str]) – необязательное имя теста, в противном случае используется имя функции.
  • f (Callable[[...], bool]) –
Тип возвращаемого значения

None

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() для этого.

Параметры

f (Callable[[Response], Response]) –

Тип возвращаемого значения

Callable[[Response], Response]

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.

Тип возвращаемого значения

flask.ctx.AppContext

app_ctx_globals_class

псевдоним flask.ctx._AppCtxGlobals

async_to_sync(func)

Возвращает синхронную функцию, которая выполнит корутинную функцию.

result = app.async_to_sync(func)(*args, **kwargs)

Переопределите этот метод, чтобы изменить способ преобразования асинхронного кода в вызываемый синхронно.

Changelog

Новое в версии 2.0.

Параметры

func (Callable[[...], Coroutine]) –

Тип возвращаемого значения

Callable[[…], Any]

auto_find_instance_path()

Пытается определить путь к экземпляру, если он не был передан конструктору класса приложения. В основном вычисляет путь к папке с именем instance рядом с вашим главным файлом или пакетом.

Changelog

Новое в версии 0.8.

Тип возвращаемого значения

str

before_first_request(f)

Регистрирует функцию, которая будет выполнена перед первой запросом к этому экземпляру приложения.

Функция будет вызвана без аргументов, и её возвращаемое значение игнорируется.

Changelog

Новая в версии 0.8.

Параметры

f (Callable[[], None]) –

Тип возвращаемого значения

Callable[[], None]

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,

Список[строка], Кортеж[строка, ...]]]]]], WSGIApplication]]]) –

Тип возвращаемого значения

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)

Регистрирует функцию процессора контекста шаблонов.

Параметры

f (Callable[[], Dict[str, Any]]) –

Тип возвращаемого значения

Callable[[], Dict[str, Any]]

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]) –

Тип возвращаемого значения

Optional[werkzeug.routing.MapAdapter]

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}

Параметры конфигурации по умолчанию.

delete(rule, **options)

Является сокращением для route() с methods=["DELETE"].

Changelog

Добавлено в версии 2.0.

Параметры
  • rule (str) –
  • options (Any) –
Тип возвращаемого значения

Callable[[flask.scaffold.F], flask.scaffold.F]

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():
    ...
Parameters

endpoint (str) – Имя конечного пункта, которое нужно сопоставить с функцией представления.

Return type

Callable

ensure_sync(func)

Обеспечивает синхронность функции для WSGI-рабочих процессов. Обычные def функции возвращаются как есть. async def функции оборачиваются для выполнения и ожидания ответа.

Переопределите этот метод, чтобы изменить способ работы асинхронных представлений приложения.

Changelog

Добавлено в версии 2.0.

Parameters

func (Callable) –

Return type

Callable

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', 500
Changelog

Добавлено в версии 0.7: Используйте register_error_handler() вместо прямого изменения error_handler_spec для обработчиков ошибок всего приложения.

Добавлено в версии 0.7: Теперь можно дополнительно регистрировать пользовательские типы исключений, которые не обязательно должны быть подклассом класса HTTPException.

Parameters

code_or_exception (Union[Type[Exception], int]) – код ошибки в виде целого числа или произвольное исключение

Return type

Callable[[ErrorHandlerCallable], ErrorHandlerCallable]

extensions: dict

место, где расширения могут хранить состояние, специфичное для приложения. Например, здесь расширение может хранить движки баз данных и аналогичные вещи.

Ключ должен соответствовать имени модуля расширения. Например, в случае расширения “Flask-Foo” в flask_foo, ключ будет 'foo'.

Changelog

Добавлено в версии 0.7.

full_dispatch_request()

Обрабатывает запрос и выполняет предварительную и последующую обработку запроса, а также перехват исключений HTTP и обработку ошибок.

Changelog

Добавлено в версии 0.7.

Return type

flask.wrappers.Response

END_OF_DOCUMENT_MARKER
get(rule, **options)

Сокращение для route() с methods=["GET"].

Журнал изменений

Новая версия в версии 2.0.

Параметры
  • rule (str) –
  • options (Any) –
Тип возвращаемого значения

Callable[[flask.scaffold.F], flask.scaffold.F]

get_send_file_max_age(filename)

Используется send_file() для определения значения кэша max_age для заданного пути к файлу, если он не был передан.

По умолчанию, это возвращает SEND_FILE_MAX_AGE_DEFAULT из конфигурации current_app. По умолчанию это None, что указывает браузеру использовать условные запросы вместо кэша с временем, что обычно предпочтительнее.

Журнал изменений

Изменено в версии 2.0: Значение конфигурации по умолчанию None вместо 12 часов.

Новая версия в версии 0.9.

Параметры

filename (Optional[str]) –

Тип возвращаемого значения

Optional[int]

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 (Исключение) –

Тип возвращаемого значения

flask.wrappers.Response

handle_http_exception(e)

Обрабатывает исключение HTTP. По умолчанию это вызывает зарегистрированные обработчики ошибок и возвращает исключение в качестве ответа.

Журнал изменений

Изменено в версии 1.0.3: RoutingException, используемый во внутренней работе для действий, таких как перенаправление на слеш во время маршрутизации, не передаётся обработчикам ошибок.

Изменено в версии 1.0: Исключения ищутся по коду и по MRO, поэтому подклассы HTTPException могут обрабатываться универсальным обработчиком для базового HTTPException.

Новая версия в версии 0.3.

Параметры

e (werkzeug.exceptions.HTTPException) –

Тип возвращаемого значения

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.

Параметры
  • endpoint (str) –
  • values (dict) –
Тип возвращаемого значения

None

instance_path

Содержит путь к папке экземпляра.

Changelog

Новая в версии 0.8.

iter_blueprints()

Итерируется по всем blueprints в порядке их регистрации.

Changelog

Новая в версии 0.11.

Тип возвращаемого значения

ValuesView[Blueprint]

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) –

Тип возвращаемого значения

flask.config.Config

make_default_options_response()

Этот метод вызывается для создания ответа по умолчанию OPTIONS. Это можно изменить, создав подкласс, чтобы изменить поведение ответов по умолчанию OPTIONS.

Changelog

Новая в версии 0.7.

Тип возвращаемого значения

flask.wrappers.Response

make_response(rv)

Преобразует возвращаемое значение из функции представления в экземпляр response_class.

END_OF_DOCUMENT_MARKER
Параметры

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. Результат используется для создания объекта ответа.

Тип возвращаемого значения

flask.wrappers.Response

Журнал изменений

Изменено в версии 0.9: Ранее кортеж интерпретировался как аргументы для объекта ответа.

make_shell_context()

Возвращает контекст оболочки для интерактивной оболочки для этого приложения. Это выполняет все зарегистрированные обработчики контекста оболочки.

Журнал изменений

Добавлена в версии 0.11.

Тип возвращаемого значения

dict

property name: str

Имя приложения. Обычно это имя импорта с отличием, что оно определяется по имени файла запуска, если имя импорта равно main. Это имя используется в качестве отображаемого имени, когда Flask нуждается в имени приложения. Его можно задать и переопределить, чтобы изменить значение.

Журнал изменений

Добавлена в версии 0.8.

open_instance_resource(resource, mode='rb')

Открывает ресурс из папки экземпляра приложения (instance_path). В противном случае работает как open_resource(). Ресурсы экземпляра также можно открыть для записи.

Параметры
  • resource (str) – имя ресурса. Для доступа к ресурсам в подпапках используйте прямые слеши в качестве разделителя.
  • mode (str) – режим открытия файла ресурса, по умолчанию 'rb'.
Тип возвращаемого значения

IO

open_resource(resource, mode='rb')

Открывает файл ресурса, относящийся к root_path, для чтения.

Например, если файл schema.sql находится рядом с файлом app.py, где определено приложение Flask, его можно открыть следующим образом:

with app.open_resource("schema.sql") as f:
    conn.executescript(f.read())
Параметры
  • resource (str) – Путь к ресурсу относительно root_path.
  • mode (str) – Режим открытия файла. Поддерживается только чтение, допустимые значения — “r” (или “rt”) и “rb”.
Тип возвращаемого значения

IO

patch(rule, **options)

Сокращение для route() с methods=["PATCH"].

Журнал изменений

Добавлена в версии 2.0.

Параметры
  • rule (str) –
  • options (Any) –
Тип возвращаемого значения

Callable[[flask.scaffold.F], flask.scaffold.F]

permanent_session_lifetime

timedelta, используемый для установки даты истечения срока действия постоянной сессии. По умолчанию 31 день, что обеспечивает примерно месячный срок действия постоянной сессии.

Этот атрибут также можно настроить из конфигурации с помощью ключа конфигурации PERMANENT_SESSION_LIFETIME. По умолчанию timedelta(days=31)

post(rule, **options)

Сокращение для route() с methods=["POST"].

Журнал изменений

Добавлена в версии 2.0.

Параметры
  • rule (str) –
  • options (Any) –
Тип возвращаемого значения

Callable[[flask.scaffold.F], flask.scaffold.F]

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.

Тип возвращаемого значения

flask.wrappers.Response

property propagate_exceptions: bool

Возвращает значение конфигурационного параметра PROPAGATE_EXCEPTIONS, если он задан, иначе возвращает разумное значение по умолчанию.

Changelog

Добавлена в версии 0.7.

put(rule, **options)

Сокращение для route() с methods=["PUT"].

Changelog

Добавлена в версии 2.0.

Параметры
  • rule (str) –
  • options (Any) –
Тип возвращаемого значения

Callable[[flask.scaffold.F], flask.scaffold.F]

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.

Параметры
  • code_or_exception (Union[Type[Exception], int]) –
  • f (ErrorHandlerCallable) –
Тип возвращаемого значения

None

request_class

псевдоним для flask.wrappers.Request

request_context(environ)

Создать RequestContext, представляющий среду WSGI. Используйте блок with для помещения контекста, что позволит request указывать на этот запрос.

См. Контекст запроса.

Как правило, вам не следует вызывать это из собственного кода. Контекст запроса автоматически помещается приложением wsgi_app() при обработке запроса. Используйте test_request_context() для создания среды и контекста вместо этого метода.

Параметры

environ (dict) – среда WSGI

Тип возвращаемого значения

flask.ctx.RequestContext

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 добавляются автоматически.

Параметры
  • rule (str) – Строка правила URL.
  • options (Any) – Дополнительные параметры, передаваемые объекту Rule.
Тип возвращаемого значения

Callable[[flask.scaffold.F], flask.scaffold.F]

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() для получения дополнительной информации.
Тип возвращаемого значения

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.

Параметры

filename (str) –

Тип возвращаемого значения

bool

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.

Параметры

filename (str) –

Тип возвращаемого значения

Response

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.

Параметры

f (Callable) –

Тип возвращаемого значения

Callable

shell_context_processors: t.List[t.Callable[[], t.Dict[str, t.Any]]]

Список функций обработчиков контекста оболочки, которые должны быть выполнены при создании контекста оболочки.

Изменения

Добавлен в версии 0.11.

should_ignore_error(error)

Это вызывается, чтобы определить, следует ли игнорировать ошибку с точки зрения системы завершения. Если эта функция возвращает True, обработчики завершения не получат ошибку.

Журнал изменений

Новая функция в версии 0.10.

Параметры

error (Optional[BaseException]) –

Тип возвращаемого значения

bool

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]
Параметры

name (Optional[str]) – необязательное имя фильтра, в противном случае будет использовано имя функции.

Тип возвращаемого значения

Callable[[Callable[[…], Any]], Callable[[…], Any]]

template_folder

Путь к папке с шаблонами, относительно root_path, для добавления в загрузчик шаблонов. None если шаблоны не должны быть добавлены.

END_OF_DOCUMENT_MARKER
template_global(name=None)

Декоратор, используемый для регистрации пользовательской глобальной функции шаблона. Можно указать имя для глобальной функции, иначе используется имя функции. Пример:

@app.template_global()
def double(n):
    return 2 * n
Изменения

Новая в версии 0.10.

Параметры

name (Optional[str]) – необязательное имя глобальной функции, иначе используется имя функции.

Тип возвращаемого значения

Callable[[Callable[[…], Any]], Callable[[…], Any]]

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.

Параметры

name (Optional[str]) – необязательное имя теста, иначе используется имя функции.

Тип возвращаемого значения

Callable[[Callable[[…], bool]], Callable[[…], bool]]

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) –

Тип возвращаемого значения

FlaskCliRunner

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 для клиента.

Параметры
  • use_cookies (bool) –
  • kwargs (Any) –
Тип возвращаемого значения

FlaskClient

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()

Принимает те же аргументы, что и EnvironBuilder Werkzeug, с некоторыми значениями по умолчанию от приложения. Большинство доступных аргументов можно найти в документации Werkzeug по ссылке. Здесь перечислены особенности работы Flask.

Параметры
  • path – Путь URL-запроса.
  • base_url – Базовый URL, на котором обслуживается приложение, относительно которого path. Если не указано, строится из PREFERRED_URL_SCHEME, subdomain, SERVER_NAME и APPLICATION_ROOT.
  • subdomain – Имя доменной зоны, добавляемое к SERVER_NAME.
  • url_scheme – Схема, используемая вместо PREFERRED_URL_SCHEME.
  • data – Тело запроса в виде строки или словаря пар «ключ-значение» формы.
  • json – Если указано, сериализуется как JSON и передаётся как data. Также значение по умолчанию content_type application/json.
  • args (Any) – дополнительные позиционные аргументы, передаваемые в EnvironBuilder.
  • kwargs (Any) – дополнительные именованные аргументы, передаваемые в EnvironBuilder.
Тип возвращаемого значения

flask.ctx.RequestContext

testing

Флаг тестирования. Установите это значение в True для включения тестового режима расширений Flask (и, вероятно, в будущем также Flask). Например, это может активировать вспомогательные средства тестирования, которые имеют дополнительную стоимость выполнения, которая по умолчанию не должна быть включена.

Если это включено, и PROPAGATE_EXCEPTIONS не изменён со значения по умолчанию, он неявно включён.

Этот атрибут также можно настроить из конфигурации с помощью ключа конфигурации TESTING. Значение по умолчанию False.

trap_http_exception(e)

Проверяет, нужно ли перехватывать исключение HTTP или нет. По умолчанию это вернёт False для всех исключений, кроме ошибки ключа при плохом запросе, если TRAP_BAD_REQUEST_ERRORS установлено в значение True. Также возвращает True если TRAP_HTTP_EXCEPTIONS установлено в True.

Это вызывается для всех исключений HTTP, поднятых функцией представления. Если для любого исключения возвращает True, обработчик ошибок для этого исключения не вызывается, и оно отображается как обычное исключение в трассировке стека. Это полезно для отладки неявно поднятых исключений HTTP.

Изменения

Изменено в версии 1.0: Ошибка при плохом запросе по умолчанию не перехватывается в режиме отладки.

Добавлена в версии 0.8.

Параметры

e (Exception) –

Тип возвращаемого значения

bool

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 для всех функций представления приложения. Вызывается с именем конечной точки и значениями и должна обновлять переданные значения на месте.

Параметры

f (Callable[[str, dict], None]) –

Тип возвращаемого значения

Callable[[str, dict], None]

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 вместо передачи его каждому представлению.

Функция получает имя конечной точки и словарь значений. Возвращаемое значение игнорируется.

Параметры

f (Callable[[Optional[str], Optional[dict]], None]) –

Тип возвращаемого значения

Callable[[Optional[str], Optional[dict]], None]

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: События завершения для контекстов запроса и приложения вызываются, даже если произошла необработанная ошибка. Другие события могут не вызываться в зависимости от того, когда произошла ошибка во время обработки. См. Обработчики событий и ошибки.

Параметры
  • environ (dict) – Среда WSGI.
  • start_response (Callable) – Вызываемый объект, принимающий код состояния, список заголовков и контекст исключения (при необходимости), чтобы начать ответ.
Тип возвращаемого значения

Any

Объекты шаблонов

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().

Параметры
  • name (Optional[str]) – необязательное имя фильтра, в противном случае будет использовано имя функции.
  • f (Callable[[...], Any]) –
Тип возвращаемого значения

None

add_app_template_global(f, name=None)

Регистрация пользовательской глобальной переменной шаблона, доступной на уровне приложения. Как Flask.add_template_global(), но для шаблона. Работает точно так же, как декоратор app_template_global().

Изменения

Добавлена в версии 0.10.

Параметры
  • name (Optional[str]) – необязательное имя глобальной переменной, в противном случае будет использовано имя функции.
  • f (Callable[[...], Any]) –
Тип возвращаемого значения

None

add_app_template_test(f, name=None)

Регистрация пользовательского теста шаблонов, доступного на уровне приложения. Как Flask.add_template_test(), но для шаблона. Работает точно так же, как декоратор app_template_test().

Изменения

Добавлена в версии 0.10.

Параметры
  • name (Optional[str]) – необязательное имя теста, в противном случае будет использовано имя функции.
  • f (Callable[[...], bool]) –
Тип возвращаемого значения

None

add_url_rule(rule, endpoint=None, view_func=None, provide_automatic_options=None, **options)

Как Flask.add_url_rule(), но для шаблона. Конечная точка для функции url_for() имеет префикс с именем шаблона.

Параметры
  • rule (str) –
  • endpoint (Optional[str]) –
  • view_func (Optional[Callable]) –
  • provide_automatic_options (Optional[bool]) –
  • options (Any) –
Тип возвращаемого значения

None

after_app_request(f)

Аналогично Flask.after_request(), но для шаблона. Такая функция выполняется после каждого запроса, даже если за пределами шаблона.

Параметры

f (Callable[[Response], Response]) –

Тип возвращаемого значения

Callable[[Response], Response]

after_request(f)

Регистрирует функцию, которая выполняется после каждого запроса к этому объекту.

Функция вызывается с объектом ответа и должна возвращать объект ответа. Это позволяет функциям изменять или заменять ответ перед его отправкой.

Если функция вызывает исключение, любые оставшиеся after_request функции не будут вызваны. Поэтому это не следует использовать для действий, которые должны быть выполнены, например, для закрытия ресурсов. Используйте teardown_request() для этого.

Параметры

f (Callable[[Response], Response]) –

Тип возвращаемого значения

Callable[[Response], Response]

after_request_funcs: t.Dict[AppOrBlueprintKey, t.List[AfterRequestCallable]]

Структура данных функций для вызова в конце каждого запроса, в формате {scope: [functions]}. Ключ scope — имя шаблона, для которого активны функции, или None для всех запросов.

Для регистрации функции используйте декоратор after_request().

Эта структура данных внутренняя. Ее не следует изменять напрямую, и ее формат может измениться в любое время.

app_context_processor(f)

Как Flask.context_processor(), но для шаблона. Такая функция выполняется каждый запрос, даже если за пределами шаблона.

Параметры

f (Callable[[], Dict[str, Any]]) –

Тип возвращаемого значения

Callable[[], Dict[str, Any]]

app_errorhandler(code)

Как Flask.errorhandler(), но для шаблона. Этот обработчик используется для всех запросов, даже если за пределами шаблона.

Параметры

code (Union[Type[Exception], int]) –

Тип возвращаемого значения

Callable

app_template_filter(name=None)

Регистрирует пользовательский фильтр шаблонов, доступный во всей приложении. Как Flask.template_filter(), но для шаблона.

Параметры

name (Optional[str]) – необязательное имя фильтра, в противном случае используется имя функции.

Тип возвращаемого значения

Callable[[Callable[[…], Any]], Callable[[…], Any]]

app_template_global(name=None)

Регистрация пользовательского глобального шаблона, доступного во всём приложении. Как Flask.template_global(), но для голубого плана.

Changelog

Новое в версии 0.10.

Параметры

name (Optional[str]) – необязательное имя глобальной переменной, в противном случае будет использовано имя функции.

Тип возвращаемого значения

Callable[[Callable[[…], Any]], Callable[[…], Any]]

app_template_test(name=None)

Регистрация пользовательского теста шаблона, доступного во всём приложении. Как Flask.template_test(), но для голубого плана.

Changelog

Новое в версии 0.10.

Параметры

name (Optional[str]) – необязательное имя теста, в противном случае будет использовано имя функции.

Тип возвращаемого значения

Callable[[Callable[[…], bool]], Callable[[…], bool]]

app_url_defaults(f)

То же, что и url_defaults(), но применимо ко всему приложению.

Параметры

f (Callable[[str, dict], None]) –

Тип возвращаемого значения

Callable[[str, dict], None]

app_url_value_preprocessor(f)

То же, что и url_value_preprocessor(), но применимо ко всему приложению.

Параметры

f (Callable[[Optional[str], Optional[dict]], None]) –

Тип возвращаемого значения

Callable[[Optional[str], Optional[dict]], None]

before_app_first_request(f)

Как Flask.before_first_request(). Такая функция выполняется перед первым запросом к приложению.

Параметры

f (Callable[[], None]) –

Тип возвращаемого значения

Callable[[], None]

before_app_request(f)

Как Flask.before_request(). Такая функция выполняется перед каждым запросом, даже если она находится вне голубого плана.

Параметры

f (Callable[[], Optional[Объединение[Ответ, строка, байты, Словарь[строка, любой], Итератор[строка], Итератор[байты], Кортеж[Объединение[Ответ, строка, байты, Словарь[строка, любой], Итератор[строка], Итератор[байты]], Объединение[Заголовки, Словарь[строка, Объединение[строка, Список[строка], Кортеж[строка, ...]]]], Список[Кортеж[строка, Объединение[строка, Список[строка], Кортеж[строка, ...]]]]], Кортеж[Объединение[Ответ, строка, байты, Словарь[строка, любой], Итератор[строка], Итератор[байты]], целое число], Кортеж[Объединение[Ответ, строка, байты, Словарь[строка, любой], Итератор[строка], Итератор[байты]], целое число, Объединение[Заголовки, Словарь[строка, Объединение[строка, Список[строка], Кортеж[строка, ...]]], Список[Кортеж[строка, Объединение[строка,

List[str], Tuple[str, ...]]]]]], WSGIApplication]]]) –

Тип возвращаемого значения

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, строка, байты, Словарь[строка, Любое], Итератор[строка], Итератор[байты]], целое, Объединение[Заголовки, Словарь[строка, Объединение[строка, Список[строка], Кортеж[строка, ...]]], Список[Кортеж[строка, Объединение[строка,

List[str], Tuple[str, ...]]]]]], WSGIApplication]]]) –

Тип возвращаемого значения

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)

Регистрирует функцию обработки контекста шаблона.

Параметры

f (Callable[[], Dict[str, Any]]) –

Тип возвращаемого значения

Callable[[], Dict[str, Any]]

delete(rule, **options)

Сокращение для route() с methods=["DELETE"].

Журнал изменений

Введено в версии 2.0.

Параметры
  • rule (str) –
  • options (Any) –
Тип возвращаемого значения

Callable[[flask.scaffold.F], flask.scaffold.F]

endpoint(endpoint)

Декорирует функцию представления для регистрации её для заданного конечной точки. Используется, если правило добавлено без view_func с помощью add_url_rule().

app.add_url_rule("/ex", endpoint="example")

@app.endpoint("example")
def example():
    ...
Параметры

endpoint (str) – Имя конечной точки, которое следует связать с функцией представления.

Тип возвращаемого значения

Callable

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.

Параметры

code_or_exception (Union[Type[Exception], int]) – код ошибки в виде целого числа или произвольное исключение

Тип возвращаемого значения

Callable[[ErrorHandlerCallable], ErrorHandlerCallable]

get(rule, **options)

Сокращение для route() с methods=["GET"].

Журнал изменений

Введено в версии 2.0.

Параметры
  • rule (str) –
  • options (Any) –
Тип возвращаемого значения

Callable[[flask.scaffold.F], flask.scaffold.F]

get_send_file_max_age(filename)

Используется send_file() для определения значения кеширования max_age для заданного пути к файлу, если оно не было передано.

По умолчанию возвращает значение SEND_FILE_MAX_AGE_DEFAULT из настроек current_app. По умолчанию это None, что сообщает браузеру использовать условные запросы вместо кэширования по времени, что обычно предпочтительнее.

Журнал изменений

Изменено в версии 2.0: Значение по умолчанию — None вместо 12 часов.

Введено в версии 0.9.

Параметры

filename (Optional[str]) –

Тип возвращаемого значения

Optional[int]

property has_static_folder: bool

True если static_folder задано.

Журнал изменений

Введено в версии 0.5.

END_OF_DOCUMENT_MARKER
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(), который позже передаётся в функции обратного вызова регистрации. Подклассы могут переопределять его, чтобы возвращать подкласс состояния настройки.

Параметры
  • app (Flask) –
  • options (dict) –
  • first_registration (bool) –
Тип возвращаемого значения

flask.blueprints.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())
Параметры
  • resource (str) – Путь к ресурсу, относительный к root_path.
  • mode (str) – Режим открытия файла. Поддерживается только чтение, допустимые значения — “r” (или “rt”) и “rb”.
Тип возвращаемого значения

IO

patch(rule, **options)

Сокращение для route() с methods=["PATCH"].

Changelog

Новое в версии 2.0.

Параметры
  • rule (str) –
  • options (Any) –
Тип возвращаемого значения

Callable[[flask.scaffold.F], flask.scaffold.F]

post(rule, **options)

Сокращение для route() с methods=["POST"].

Changelog

Новое в версии 2.0.

Параметры
  • rule (str) –
  • options (Any) –
Тип возвращаемого значения

Callable[[flask.scaffold.F], flask.scaffold.F]

put(rule, **options)

Сокращение для route() с methods=["PUT"].

Changelog

Новое в версии 2.0.

Параметры
  • rule (str) –
  • options (Any) –
Тип возвращаемого значения

Callable[[flask.scaffold.F], flask.scaffold.F]

record(func)

Регистрирует функцию, которая вызывается при регистрации Blueprint в приложении. Эта функция вызывается с аргументом состояния, возвращаемым методом make_setup_state().

Параметры

func (Callable) –

Тип возвращаемого значения

None

record_once(func)

Работает подобно record(), но оборачивает функцию в другую функцию, гарантирующую, что функция вызывается только один раз. Если Blueprint регистрируется во второй раз в приложении, переданная функция не вызывается.

Параметры

func (Callable) –

Тип возвращаемого значения

None

END_OF_DOCUMENT_MARKER
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.

Параметры
  • code_or_exception (Union[Type[Exception], int]) –
  • f (ErrorHandlerCallable) –
Тип возвращаемого значения

None

root_path

Абсолютный путь к пакету в файловой системе. Используется для поиска ресурсов, содержащихся в пакете.

route(rule, **options)

Декорирует функцию представления для регистрации её с заданным правилом URL и параметрами. Вызывает add_url_rule(), который содержит более подробную информацию об имплементации.

@app.route("/")
def index():
    return "Hello, World!"

См. Регистрации правил URL.

Имя конечной точки маршрута по умолчанию равно имени функции представления, если параметр endpoint не передан.

Параметр methods по умолчанию ["GET"]. HEAD и OPTIONS добавляются автоматически.

Параметры
  • rule (str) – Строка правила URL.
  • options (Any) – Дополнительные параметры, переданные объекту Rule.
Тип возвращаемого значения

Callable[[flask.scaffold.F], flask.scaffold.F]

send_static_file(filename)

Функция представления, используемая для обслуживания файлов из static_folder. Маршрут автоматически регистрируется для этого представления по адресу static_url_path, если static_folder задан.

Changelog

Добавлено в версии 0.5.

Параметры

filename (str) –

Тип возвращаемого значения

Response

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 для всех функций представления приложения. Она вызывается с именем конечной точки и значениями и должна обновить переданные значения на месте.

Параметры

f (Callable[[str, dict], None]) –

Тип возвращаемого значения

Callable[[str, dict], None]

url_value_preprocessor(f)

Зарегистрировать функцию предварительной обработки значений URL для всех функций представления в приложении. Эти функции будут вызываться перед функциями before_request().

Функция может изменить значения, полученные из сопоставленного URL, прежде чем передать их в представление. Например, это можно использовать для извлечения общего кода языка и размещения его в g вместо передачи его в каждое представление.

Функции передаются имя конечной точки и словарь значений. Возвращаемое значение игнорируется.

Параметры

f (Callable[[Optional[str], Optional[dict]], None]) –

Тип возвращаемого значения

Callable[[Optional[str], Optional[dict]], None]

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.

Параметры
  • environ (WSGIEnvironment) –
  • populate_request (bool) –
  • shallow (bool) –
Тип возвращаемого значения

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-исключения автоматически перехватываются и преобразуются в ответы вместо отказа.

Параметры

f (Callable[[Запрос], WSGIApplication]) – вызываемая WSGI-функция для декорирования

Возвращаемое значение

новая вызываемая WSGI-функция

Тип возвращаемого значения

WSGIApplication

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

Псевдоним werkzeug.datastructures.ImmutableMultiDict

END_OF_DOCUMENT_MARKER
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 — это объект Werkzeug FileStorage.

По сути, он ведет себя как стандартный файловый объект из 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.

Возвращает

объект запроса

Параметры
  • args (Any) –
  • kwargs (Any) –
Тип возвращаемого значения

werkzeug.wrappers.request.Request

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.

Параметры
  • cache (bool) –
  • as_text (bool) –
  • parse_form_data (bool) –
Тип возвращаемого значения

Union[bytes, str]

get_json(force=False, silent=False, cache=True)

Парсит data как JSON.

Если тип MIME не указывает JSON (application/json, см. is_json), или парсинг терпит неудачу, вызывается on_json_loading_failed(), и его возвращаемое значение используется как возвращаемое значение. По умолчанию это вызывает ошибку 400 Bad Request.

Параметры
  • force (bool) – Игнорировать тип MIME и всегда пытаться распарсить JSON.
  • silent (bool) – Безмолвно игнорировать ошибки типа MIME и парсинга и вернуть None вместо этого.
  • cache (bool) – Сохранить распарсенный JSON для последующих вызовов.
Тип возвращаемого значения

Optional[Any]

Изменено в версии 2.1: Вызывать ошибку 400, если тип содержимого неверный.

headers

Заголовки, полученные с запросом.

property host: str

Имя хоста, к которому был обращён запрос, включая порт, если он нестандартный. Валидируется с помощью trusted_hosts.

property host_url: str

Схема и хост URL запроса.

END_OF_DOCUMENT_MARKER
property if_match: werkzeug.datastructures.ETags

Объект, содержащий все значения etag в заголовке If-Match.

Тип возвращаемого значения

ETags

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.

Тип возвращаемого значения

ETags

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.

Тип возвращаемого значения

werkzeug.formparser.FormDataParser

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.

Тип возвращаемого значения

Any

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.

Тип возвращаемого значения

Range

END_OF_DOCUMENT_MARKER
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 (атрибут исключения Werkzeug MethodNotAllowed), так как запрос никогда не был связан во внутренней среде.

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)
END_OF_DOCUMENT_MARKER

Объект ответа, используемый по умолчанию в Flask. Работает как объект ответа из Werkzeug, но по умолчанию имеет тип MIME HTML. Часто вам не нужно создавать этот объект самостоятельно, так как make_response() сделает это за вас.

Если вы хотите заменить используемый объект ответа, вы можете создать подкласс и установить response_class на свой подкласс.

Журнал изменений

Изменено в версии 1.0: Поддержка JSON добавлена в ответ, как и в запросе. Это полезно при тестировании, чтобы получить данные ответа тестового клиента в формате JSON.

Изменено в версии 1.0: Добавлен max_cookie_size.

Параметры
  • response (Union[Iterable[str], Iterable[bytes]]) –
  • status (Optional[Union[int, str, http.HTTPStatus]]) –
  • headers (werkzeug.datastructures.Headers) –
  • mimetype (Optional[str]) –
  • content_type (Optional[str]) –
  • direct_passthrough (bool) –
Тип возвращаемого значения

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 может быть недоступен в некоторых средах.

Параметры
  • overwrite (bool) –
  • weak (bool) –
Тип возвращаемого значения

None

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 в противном случае.

Тип возвращаемого значения

Optional[int]

call_on_close(func)

Добавляет функцию в внутренний список функций, которые должны вызываться при закрытии ответа. Начиная с версии 0.7, эта функция также возвращает переданную функцию, чтобы это можно было использовать как декоратор.

Журнал изменений

Добавлен в версии 0.6.

Параметры

func (Callable[[], Any]) –

Тип возвращаемого значения

Callable[[], Any]

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)

Это особенно полезно, если вы хотите обработать ответы на главном диспетчере и использовать функциональность, предоставляемую вашим подклассом.

Помните, что это может изменить объекты ответов на месте, если это возможно!

Параметры
  • ответ (Ответ) – объект ответа или WSGI приложение.
  • среда (Optional[WSGIEnvironment]) – объект среды WSGI.
Возвращает

объект ответа.

Тип возвращаемого значения

Ответ

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, что обеспечивает буферизацию.

Параметры
  • app (WSGIApplication) – приложение WSGI для выполнения.
  • environ (WSGIEnvironment) – среда WSGI для выполнения.
  • buffered (bool) – установите в True для обеспечения буферизации.
Возвращает

объект ответа.

Тип возвращаемого значения

Response

get_app_iter(environ)

Возвращает итератор приложения для данной среды. В зависимости от метода запроса и текущего кода состояния возвращаемое значение может быть пустым ответом, а не тем, что содержится в ответе.

Если метод запроса равен HEAD или код состояния находится в диапазоне, где спецификация HTTP требует пустого ответа, возвращается пустая итерируемая последовательность.

Changelog

Новая функция в версии 0.6.

Параметры

environ (WSGIEnvironment) – среда WSGI запроса.

Возвращает

итерируемую последовательность ответа.

Тип возвращаемого значения

Iterable[bytes]

get_data(as_text=False)

Строковое представление тела ответа. Каждый раз, когда вы вызываете это свойство, итерируемая последовательность ответа кодируется и сжимается. Это может привести к нежелательному поведению при работе с большими данными.

Это поведение можно отключить, установив implicit_sequence_conversion в False.

Если as_text установлено в True, возвращаемое значение будет декодированной строкой.

Changelog

Новая функция в версии 0.9.

Параметры

as_text (bool) –

Тип возвращаемого значения

Union[bytes, str]

get_etag()

Возвращает кортеж в формате (etag, is_weak). Если ETag отсутствует, возвращаемое значение равно (None, None).

Тип возвращаемого значения

Union[Tuple[str, bool], Tuple[None, None]]

get_json(force=False, silent=False)

Разбор data как JSON. Полезно во время тестирования.

Если MIME-тип не указывает JSON (application/json, см. is_json), возвращается None.

В отличие от Request.get_json(), результат не кэшируется.

Параметры
  • force (bool) – Игнорировать MIME-тип и всегда пытаться разобрать JSON.
  • silent (bool) – Скрыть ошибки разбора и вернуть None вместо них.
Тип возвращаемого значения

Optional[Any]

get_wsgi_headers(environ)

Автоматически вызывается непосредственно перед запуском ответа и возвращает заголовки, изменённые для данной среды. Возвращает копию заголовков из ответа с внесёнными изменениями, если необходимо.

Например, заголовок расположения (если он есть) объединяется с корневым URL-адресом среды. Кроме того, длина содержимого автоматически устанавливается в ноль для определённых кодов состояния.

Changelog

Изменено в версии 0.6: Ранее эта функция называлась fix_headers и изменяла объект ответа непосредственно. Также начиная с версии 0.6, IRIs в заголовках расположения и расположения содержимого обрабатываются должным образом.

Также начиная с версии 0.6, Werkzeug попытается установить длину содержимого, если сможет это сделать самостоятельно. Это происходит в случае, если все строки в итерируемой последовательности ответа уже закодированы, а итерируемая последовательность буферизована.

Параметры

environ (WSGIEnvironment) – среда WSGI запроса.

Возвращает

возвращает новый объект Headers.

Тип возвращаемого значения

werkzeug.datastructures.Headers

get_wsgi_response(environ)

Возвращает окончательный ответ WSGI в виде кортежа. Первый элемент кортежа — итерируемая последовательность приложения, второй — код состояния, а третий — список заголовков. Возвращаемый ответ создаётся специально для данной среды. Например, если метод запроса в среде WSGI равен 'HEAD', ответ будет пустым, и будут присутствовать только заголовки и код состояния.

Changelog

Новая функция в версии 0.6.

Параметры

environ (WSGIEnvironment) – среда WSGI запроса.

Возвращает

кортеж (app_iter, status, headers).

Тип возвращаемого значения

Tuple[Iterable[bytes], str, List[Tuple[str, str]]]

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.

Тип возвращаемого значения

Iterator[байты]

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.

Параметры

значение (Union[bytes, str]) –

Тип возвращаемого значения

None

set_etag(etag, weak=False)

Устанавливает etag и перезаписывает предыдущее значение, если оно было.

Параметры
  • etag (str) –
  • weak (bool) –
Тип возвращаемого значения

None

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.

END_OF_DOCUMENT_MARKER
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 обновляется, чтобы избежать повторного выполнения логики.

Параметры

app (Flask) –

Тип возвращаемого значения

Optional[str]

get_cookie_httponly(app)

Возвращает True, если для куки сессии должен быть установлен httponly. В настоящее время возвращает значение конфигурационной переменной SESSION_COOKIE_HTTPONLY.

Параметры

app (Flask) –

Тип возвращаемого значения

bool

get_cookie_name(app)

Возвращает имя куки сессии.

Использует app.session_cookie_name, которое установлено в значение SESSION_COOKIE_NAME

Параметры

app (Flask) –

Тип возвращаемого значения

str

get_cookie_path(app)

Возвращает путь, для которого куки должна быть действительной. По умолчанию используется значение из конфигурационной переменной SESSION_COOKIE_PATH если она установлена, иначе используется APPLICATION_ROOT или /, если None.

Параметры

app (Flask) –

Тип возвращаемого значения

str

get_cookie_samesite(app)

Возвращает 'Strict' или 'Lax', если куки должна использовать атрибут SameSite . В настоящее время просто возвращает значение настройки SESSION_COOKIE_SAMESITE.

Параметры

app (Flask) –

Тип возвращаемого значения

str

get_cookie_secure(app)

Возвращает True, если куки должна быть защищенной. В настоящее время просто возвращает значение настройки SESSION_COOKIE_SECURE.

Параметры

app (Flask) –

Тип возвращаемого значения

bool

get_expiration_time(app, session)

Вспомогательный метод, возвращающий дату истечения срока действия сессии или None, если сессия связана с сессией браузера. По умолчанию реализация возвращает текущую дату и время плюс время жизни постоянной сессии, настроенной в приложении.

Параметры
  • app (Flask) –
  • session (flask.sessions.SessionMixin) –
Тип возвращаемого значения

Optional[datetime.datetime]

is_null_session(obj)

Проверяет, является ли данный объект пустой сессией. Пустые сессии не запрашиваются для сохранения.

По умолчанию проверяет, является ли объект экземпляром null_session_class.

Параметры

obj (object) –

Тип возвращаемого значения

bool

make_null_session(app)

Создаёт пустую сессию, которая выступает в качестве заменяющего объекта, если реальная поддержка сессий не может быть загружена из-за ошибки конфигурации. В основном это помогает пользователю, потому что задача пустой сессии — поддерживать поиск без жалоб, но изменения сопровождаются полезным сообщением об ошибке, объясняющим, что не удалось.

По умолчанию создаёт экземпляр null_session_class.

Параметры

app (Flask) –

Тип возвращаемого значения

flask.sessions.NullSession

null_session_class

make_null_session() ищет здесь класс, который должен быть создан при запросе пустой сессии. Аналогично, метод is_null_session() выполняет проверку типа относительно этого типа.

псевдоним flask.sessions.NullSession

open_session(app, request)

Это вызывается в начале каждого запроса после добавления контекста запроса, перед сопоставлением URL.

Это должно вернуть объект, реализующий интерфейс словаря, а также интерфейс SessionMixin.

Это вернёт None для указания того, что загрузка не удалась по какой-то причине, которая не является непосредственной ошибкой. В этом случае контекст запроса вернёт make_null_session().

Параметры
  • app (Flask) –
  • request (Запрос) –
Тип возвращаемого значения

Optional[flask.sessions.SessionMixin]

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) –
Тип возвращаемого значения

bool

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().

Параметры
  • app (Flask) –
  • request (Запрос) –
Тип возвращаемого значения

Optional[flask.sessions.SecureCookieSession]

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)

Возвращает значение для ключа, если ключ есть в словаре, иначе возвращает значение по умолчанию.

Параметры
  • key (str) –
  • default (Optional[Any]) –
Тип возвращаемого значения

Any

modified = False

При изменении данных, это устанавливается в True. Отслеживается только сам словарь сессии; если сессия содержит изменяемые данные (например, вложенный словарь), то это значение необходимо установить в True вручную при изменении этих данных. Куки сессии будут записаны в ответ только в том случае, если это значение True.

setdefault(key, default=None)

Вставить ключ со значением по умолчанию, если ключ отсутствует в словаре.

Возвращает значение для ключа, если ключ есть в словаре, иначе возвращает значение по умолчанию.

Параметры
  • key (str) –
  • default (Optional[Any]) –
Тип возвращаемого значения

Any

class flask.sessions.NullSession(initial=None)

Класс, используемый для генерации более понятных сообщений об ошибках, если сессии недоступны. Позволяет чтение пустой сессии только для чтения, но не позволяет производить запись.

Параметры

initial (Any) –

Тип возвращаемого значения

None

clear() → None. Remove all items from D.
Параметры
  • args (Any) –
  • kwargs (Any) –
Тип возвращаемого значения

te.NoReturn

pop(k[, d]) → v, remove specified key and return the corresponding value.

Если ключ не найден, возвращает значение по умолчанию, если задано; в противном случае, генерирует исключение KeyError.

Параметры
  • args (Any) –
  • kwargs (Any) –
Тип возвращаемого значения

te.NoReturn

popitem(*args, **kwargs)

Удаляет и возвращает пару (ключ, значение) в виде кортежа из двух элементов.

Пары возвращаются в порядке LIFO (последний вошел, первый вышел). Вызывает исключение KeyError, если словарь пуст.

Параметры
  • args (Any) –
  • kwargs (Any) –
Тип возвращаемого значения

te.NoReturn

setdefault(*args, **kwargs)

Вставляет ключ со значением по умолчанию, если ключ отсутствует в словаре.

Возвращает значение для ключа, если ключ есть в словаре, иначе возвращает значение по умолчанию.

Параметры
  • args (Any) –
  • kwargs (Any) –
Тип возвращаемого значения

te.NoReturn

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]

Параметры
  • args (Any) –
  • kwargs (Any) –
Тип возвращаемого значения

te.NoReturn

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.

Параметры
  • args (Any) –
  • kwargs (Any) –
Тип возвращаемого значения

None

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) –
Тип возвращаемого значения

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(), которые передаются напрямую.

Параметры
  • args (Any) –
  • kwargs (Any) –
Тип возвращаемого значения

Generator[flask.sessions.SessionMixin, None, None]

Запуск команд CLI

class flask.testing.FlaskCliRunner(app, **kwargs)

Класс CliRunner для тестирования команд CLI приложения Flask. Обычно создаётся с помощью test_cli_runner(). См. Запуск команд с помощью CLI Runner.

Параметры
  • app (Flask) –
  • kwargs (Any) –
Тип возвращаемого значения

None

invoke(cli=None, args=None, **kwargs)

Вызывает команду CLI в изолированной среде. См. CliRunner.invoke для полной документации метода. См. Запуск команд с помощью CLI Runner для примеров.

Если аргумент obj не указан, передаёт экземпляр ScriptInfo, который знает, как загрузить приложение Flask, которое тестируется.

Параметры
  • cli (Optional[Any]) – Объект команды для вызова. По умолчанию используется группа cli приложения.
  • args (Optional[Any]) – Список строк для вызова команды.
  • kwargs (Any) –
Возвращает

объект Result.

Тип возвращаемого значения

Any

Глобальные переменные приложения

Для совместного использования данных, применимых только к одному запросу, одной функции с другой, глобальной переменной недостаточно, так как она будет работать некорректно в многопоточных средах. 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
  • name (str) – Имя атрибута для получения.
  • default (Optional[Any]) – Значение по умолчанию, если атрибут отсутствует.
Return type

Any

Журнал изменений

Введено в версии 0.10.

pop(name, default=<object object>)

Получение и удаление атрибута по имени. Как dict.pop().

Parameters
  • name (str) – Имя атрибута для удаления.
  • default (Any) – Значение по умолчанию, которое будет возвращено, если атрибут отсутствует, вместо генерации исключения KeyError.
Return type

Any

Журнал изменений

Введено в версии 0.11.

setdefault(name, default=None)

Получение значения атрибута, если оно присутствует, в противном случае установка и возврат значения по умолчанию. Как dict.setdefault().

Parameters
  • name (str) – Имя атрибута для получения.
  • default (Optional[Any]) – Значение по умолчанию, которое будет установлено и возвращено, если атрибут отсутствует.
Return type

Any

Журнал изменений

Введено в версии 0.11.

END_OF_DOCUMENT_MARKER

Полезные функции и классы

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.

Тип возвращаемого значения

bool

flask.copy_current_request_context(f)

Вспомогательная функция, которая декорирует функцию для сохранения текущего контекста запроса. Это полезно при работе с greenlets. В момент декорации создаётся копия контекста запроса, которая затем подключается при вызове функции. В скопированный контекст запроса также включается текущая сессия.

Пример:

import gevent
from flask import copy_current_request_context

@app.route('/')
def index():
    @copy_current_request_context
    def do_some_work():
        # do some work here, it can access flask.request or
        # flask.session like you would otherwise in the view function.
        ...
    gevent.spawn(do_some_work)
    return 'Regular response'
Изменения

Добавлена в версии 0.10.

Параметры

f (Callable) –

Тип возвращаемого значения

Callable

flask.has_app_context()

Работает так же, как has_request_context(), но для контекста приложения. Также можно просто проверить объект current_app на истинность.

Изменения

Добавлена в версии 0.9.

Тип возвращаемого значения

bool

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-метод.
Тип возвращаемого значения

str

flask.abort(status, *args, **kwargs)

Вызывает HTTPException с заданным кодом состояния или WSGI-приложением.

Если указан код состояния, он будет найден в списке исключений и вызовет это исключение. Если передано WSGI-приложение, оно будет обернуто в прокси-исключение WSGI и вызвать его:

abort(404)  # 404 Not Found
abort(Response('Hello World'))
Параметры
  • status (Union[int, Response]) –
  • args (Any) –
  • kwargs (Any) –
Тип возвращаемого значения

te.NoReturn

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, если не указано иное.
Тип возвращаемого значения

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.

Параметры

args (Any) –

Тип возвращаемого значения

Response

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.

Параметры

f (Callable[[Response], Response]) –

Тип возвращаемого значения

Callable[[Response], Response]

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]) –
Тип возвращаемого значения

Response

Изменения

Изменено в версии 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 &lt;em&gt;World&lt;/em&gt;!')

Это реализует интерфейс __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 &amp; bar</em>')
>>> Markup("<em>Hello</em> ") + "<foo>"
Markup('<em>Hello</em> &lt;foo&gt;')
Параметры
  • base (Any) –
  • encoding (Optional[str]) –
  • errors (str) –
Тип возвращаемого значения

Markup

classmethod escape(s)

Экранировать строку. Вызывает escape() и гарантирует, что для подклассов возвращается правильный тип.

Параметры

s (Any) –

Тип возвращаемого значения

markupsafe.Markup

striptags()

unescape() разметку, удаляет теги и нормализует пробелы до одиночных пробелов.

>>> Markup("Main &raquo;        <em>About</em>").striptags()
'Main » About'
Тип возвращаемого значения

str

unescape()

Преобразовать экранированную разметку обратно в строку текста. Это заменяет сущности HTML символами, которые они представляют.

>>> Markup("Main &raquo; <em>About</em>").unescape()
'Main » <em>About</em>'
Тип возвращаемого значения

str

Выведение сообщений всплывающим окном

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 параметр добавлен.

Параметры
  • with_categories (bool) – установите в значение True для получения категорий.
  • category_filter (Iterable[str]) – фильтр категорий для ограничения возвращаемых значений. Будут возвращены только категории из списка.
Тип возвращаемого значения

Union[List[str], List[Tuple[str, str]]]

Поддержка 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().

  1. Один аргумент: Обрабатывается как единственное значение.
  2. Несколько аргументов: Обрабатывается как список значений. jsonify(1, 2, 3) эквивалентно jsonify([1, 2, 3]).
  3. Аргументы с именами (keyword arguments): Обрабатываются как словарь значений. jsonify(data=data, errors=errors) эквивалентно jsonify({"data": data, "errors": errors}).
  4. Передача как аргументов, так и аргументов с именами (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.

Параметры
  • args (Any) –
  • kwargs (Any) –
Тип возвращаемого значения

Response

flask.json.dumps(obj, app=None, **kwargs)

Сериализует объект в строку JSON.

Принимает те же аргументы, что и встроенная функция json.dumps(), с некоторыми значениями по умолчанию из конфигурации приложения.

Параметры
  • obj (Any) – Объект, подлежащий сериализации в JSON.
  • app (Optional[Flask]) – Использование конфигурации этого приложения вместо активного контекста приложения или значений по умолчанию.
  • kwargs (Any) – Дополнительные аргументы, передаваемые в json.dumps().
Тип возвращаемого значения

str

Изменения

Изменено в версии 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(), с некоторыми значениями по умолчанию из конфигурации приложения.

Параметры
  • obj (Any) – Объект, подлежащий сериализации в JSON.
  • fp (IO[str]) – Объект файла для записи JSON.
  • app (Optional[Flask]) – Использование конфигурации этого приложения вместо активного контекста приложения или значений по умолчанию.
  • kwargs (Any) – Дополнительные аргументы, передаваемые в 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().
Тип возвращаемого значения

Any

Изменения

Изменено в версии 2.0: encoding устарело и будет удалено в Flask 2.1. Данные должны быть строкой или байтами UTF-8.

Изменено в версии 1.0.3: app можно передавать напрямую, а не требуя контекста приложения для настройки.

flask.json.load(fp, app=None, **kwargs)

Десериализация объекта из JSON, считанного из объекта файла.

Принимает те же аргументы, что и встроенная функция json.load(), с некоторыми значениями по умолчанию из конфигурации приложения.

Параметры
  • fp (IO[str]) – Объект файла для чтения JSON.
  • app (Optional[Flask]) – Использование конфигурации этого приложения вместо активного контекста приложения или значений по умолчанию.
  • kwargs (Any) – Дополнительные аргументы, передаваемые функции json.load().
Тип возвращаемого значения

Any

Изменения

Изменено в версии 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, они обрабатываются до вызова этого метода.

Параметры

o (Any) –

Тип возвращаемого значения

Any

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.

Поддерживаются следующие дополнительные типы:

  • dict
  • tuple
  • bytes
  • Markup
  • UUID
  • datetime
Тип возвращаемого значения

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.

Параметры

value (Any) –

Тип возвращаемого значения

str

loads(value)

Загружает данные из строки JSON и десериализует любые помеченные объекты.

Параметры

value (str) –

Тип возвращаемого значения

Any

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)

Преобразует значение в помеченное представление, если необходимо.

Параметры

value (Any) –

Тип возвращаемого значения

Dict[str, Any]

untag(value)

Преобразует помеченное представление обратно в исходный тип.

Параметры

value (Dict[str, Any]) –

Тип возвращаемого значения

Any

class flask.json.tag.JSONTag(serializer)

Базовый класс для определения меток типов для TaggedJSONSerializer.

Параметры

serializer (TaggedJSONSerializer) –

Тип возвращаемого значения

None

check(value)

Проверяет, должно ли данное значение быть помечено этой меткой.

Параметры

value (Any) –

Тип возвращаемого значения

bool

key: Optional[str] = None

Метка для маркировки сериализованного объекта. Если None, эта метка используется только как промежуточный шаг при маркировании.

tag(value)

Преобразует значение в допустимый тип JSON и добавляет вокруг него структуру метки.

Параметры

value (Any) –

Тип возвращаемого значения

Any

to_json(value)

Преобразует объект Python в объект, являющийся допустимым типом JSON. Метка будет добавлена позже.

Параметры

value (Any) –

Тип возвращаемого значения

Any

to_python(value)

Преобразует представление JSON обратно в правильный тип. Метка уже будет удалена.

Параметры

value (Any) –

Тип возвращаемого значения

Any

Давайте посмотрим пример, добавляющий поддержку 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) – переменные, которые должны быть доступны в контексте шаблона.
Тип возвращаемого значения

str

flask.render_template_string(source, **context)

Отображает шаблон из заданной строки исходного кода шаблона с заданным контекстом. Переменные шаблона будут автоматически экранироваться.

Параметры
  • source (str) – исходный код шаблона для отображения
  • context (Any) – переменные, которые должны быть доступны в контексте шаблона.
Тип возвращаемого значения

str

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.

Параметры
  • template_name (str) – имя шаблона
  • attribute (str) – имя переменной или макроса для доступа
Тип возвращаемого значения

Any

Настройка

class flask.Config(root_path, defaults=None)

Работает точно так же, как словарь, но предоставляет способы заполнения его из файлов или специальных словарей. Существует два распространённых шаблона для заполнения конфигурации.

Вы можете заполнить конфигурацию из файла конфигурации:

app.config.from_pyfile('yourconfig.cfg')

Или, как альтернативу, вы можете определить параметры конфигурации в модуле, который вызывает from_object(), или предоставить путь импорта к модулю, который должен быть загружен. Также можно указать ему использовать тот же модуль и предоставить значения конфигурации непосредственно перед вызовом:

DEBUG = True
SECRET_KEY = 'development key'
app.config.from_object(__name__)

В обоих случаях (загрузка из любого файла Python или из модулей) в конфигурацию добавляются только ключи с заглавными буквами. Это позволяет использовать строчные значения в файле конфигурации для временных значений, которые не добавляются в конфигурацию, или определять ключи конфигурации в том же файле, что и реализация приложения.

Вероятно, самый интересный способ загрузки конфигураций — из переменной окружения, указывающей на файл:

app.config.from_envvar('YOURAPPLICATION_SETTINGS')

В этом случае перед запуском приложения необходимо установить эту переменную окружения в файл, который вы хотите использовать. В Linux и OS X используйте оператор export:

export YOURAPPLICATION_SETTINGS='/path/to/config/file'

В Windows используйте set вместо этого.

Параметры
  • root_path (str) – путь, относительно которого считываются файлы. Когда объект конфигурации создаётся приложением, это корневой путь приложения root_path.
  • defaults (Optional[dict]) – необязательный словарь значений по умолчанию
Тип возвращаемого значения

None

from_envvar(variable_name, silent=False)

Загружает конфигурацию из переменной окружения, указывающей на файл конфигурации. Это в основном просто сокращение с более приятными сообщениями об ошибках для этой строки кода:

app.config.from_pyfile(os.environ['YOURAPPLICATION_SETTINGS'])
Параметры
  • variable_name (str) – имя переменной окружения
  • silent (bool) – устанавливается в True если вы хотите, чтобы ошибки при отсутствии файлов игнорировались.
Возвращает

True если файл был загружен успешно.

Тип возвращаемого значения

bool

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 если файл был загружен успешно.

Тип возвращаемого значения

bool

Журнал изменений

Введено в версии 2.0.

from_mapping(mapping=None, **kwargs)

Обновляет конфигурацию, как update(), игнорируя элементы с ключами, не имеющими заглавных букв. :return: Всегда возвращает True.

Журнал изменений

Введено в версии 0.11.

Параметры
  • mapping (Optional[Mapping[str, Any]]) –
  • kwargs (Any) –
Тип возвращаемого значения

bool

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().

Параметры

obj (Union[object, str]) – имя импорта или объект

Тип возвращаемого значения

None

from_prefixed_env(prefix='FLASK', *, loads=<function loads>)

Загружает все переменные окружения, начинающиеся с FLASK_, удаляя префикс из ключа env для ключа конфигурации. Значения передаются в функцию загрузки для попытки преобразовать их в типы, более специфичные, чем строки.

Ключи загружаются в порядке sorted().

Функция загрузки по умолчанию пытается разобрать значения как любой допустимый JSON-тип, включая словари и списки.

Конкретные элементы вложенных словарей можно установить, разделяя ключи двойным подчёркиванием (__). Если промежуточного ключа не существует, он будет инициализирован пустым словарем.

Параметры
  • prefix (str) – Загружать переменные окружения, начинающиеся с этого префикса, разделённые подчёркиванием (_).
  • loads (Callable[[str], Any]) – Передавать каждое строковое значение в эту функцию и использовать возвращаемое значение в качестве значения конфигурации. Если возникает какая-либо ошибка, она игнорируется, и значение остаётся строкой. По умолчанию json.loads().
Тип возвращаемого значения

bool

Введено в версии 2.1.

from_pyfile(filename, silent=False)

Обновляет значения в конфигурации из файла Python. Эта функция ведет себя так, как будто файл был импортирован как модуль с функцией from_object().

Параметры
  • filename (str) – имя файла конфигурации. Это может быть абсолютный путь или путь, относительный к корневому каталогу.
  • silent (bool) – устанавливается в True если вы хотите, чтобы при отсутствии файла не было вывода.
Возвращает

True если файл был загружен успешно.

Тип возвращаемого значения

bool

Журнал изменений

Новая в версии 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'
}

Это часто полезно, когда параметры конфигурации напрямую сопоставляются с именованными аргументами в функциях или конструкторах классов.

Параметры
  • namespace (str) – пространство имен конфигурации
  • lowercase (bool) – флаг, указывающий, должны ли ключи результирующего словаря быть в нижнем регистре
  • trim_namespace (bool) – флаг, указывающий, должны ли ключи результирующего словаря не включать пространство имен
Тип возвращаемого значения

Dict[str, Any]

Журнал изменений

Новая в версии 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.

Параметры

generator_or_function (Union[Iterator, Callable[[...], Iterator]]) –

Тип возвращаемого значения

Iterator

Полезные внутренние компоненты

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() стек, в противном случае ваши юнит-тесты будут утечку памяти.

Параметры
  • app (Flask) –
  • environ (dict) –
  • request (Optional[Request]) –
  • session (Optional[SessionMixin]) –
Тип возвращаемого значения

None

copy()

Создает копию контекста запроса с тем же объектом запроса. Это можно использовать для перемещения контекста запроса в другой greenlet. Поскольку фактический объект запроса тот же, это нельзя использовать для перемещения контекста запроса в другую нить, если доступ к объекту запроса не заблокирован.

Изменения

Изменено в версии 1.1: Вместо перезагрузки исходных данных используется текущий объект сессии. Это предотвращает flask.session указание на устаревший объект.

Добавлена в версии 0.10.

Тип возвращаемого значения

flask.ctx.RequestContext

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() и затем передаётся во все функции обратного вызова регистрации.

Параметры
  • blueprint (Плагин) –
  • app (Flask) –
  • options (Любой) –
  • first_registration (bool) –
Тип возвращаемого значения

None

add_url_rule(rule, endpoint=None, view_func=None, **options)

Вспомогательный метод для регистрации правила (и, необязательно, функции представления) в приложении. Конечная точка автоматически префиксруется именем плагина.

Параметры
  • rule (str) –
  • endpoint (Optional[str]) –
  • view_func (Optional[Callable]) –
  • options (Любой) –
Тип возвращаемого значения

None

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(), передаются конструктору класса.

Параметры
  • name (str) –
  • class_args (Any) –
  • class_kwargs (Any) –
Тип возвращаемого значения

Callable

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.

Параметры
  • args (Any) –
  • kwargs (Any) –
Тип возвращаемого значения

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

В целом, есть три способа определения правил для системы маршрутизации:

  1. Можно использовать декоратор flask.Flask.route().
  2. Можно использовать функцию flask.Flask.add_url_rule().
  3. Можно напрямую обратиться к внутренней системе маршрутизации Werkzeug, которая представлена как flask.Flask.url_map.

Переменные части в маршруте могут быть указаны с использованием угловых скобок (/user/<username>). По умолчанию переменная часть в URL принимает любую строку без косой черты, однако можно указать другой преобразователь, используя <converter:name>.

Переменные части передаются функции представления в качестве ключевых аргументов.

Доступны следующие преобразователи:

string

принимает любой текст без косой черты (по умолчанию)

int

принимает целые числа

float

как int , но для чисел с плавающей точкой

path

как по умолчанию, но также принимает косые черты

any

сопоставляет один из предоставленных элементов

uuid

принимает строки 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, поэтому применяются следующие правила:

  1. Если правило заканчивается косой чертой, а пользователь запрашивает его без косой черты, пользователь автоматически перенаправляется на ту же страницу с добавлением конечной косой черты.
  2. Если правило не заканчивается конечной косой чертой, а пользователь запрашивает страницу с конечной косой чертой, возникает ошибка 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.

rule

правило URL в виде строки

endpoint

точку входа для зарегистрированного правила URL. Flask по умолчанию предполагает, что имя функции представления является именем точки входа, если не указано явно.

view_func

функция, вызываемая при получении запроса к указанной точке входа. Если она не указана, можно указать функцию позже, сохранив ее в словаре view_functions с точкой входа в качестве ключа.

defaults

Словарь со значениями по умолчанию для этого правила. Обратитесь к приведенному выше примеру, чтобы узнать, как работают значения по умолчанию.

subdomain

указывает правило для поддомена в случае использования сопоставления поддоменов. Если не указано, предполагается поддомен по умолчанию.

**options

опции, которые будут переданы в объект Rule ниже. Изменение в Werkzeug — это обработка опций методов. методы — это список методов, к которым должно быть ограничено это правило (GET, POST и т. д.). По умолчанию правило просто слушает GET (и неявно HEAD). Начиная с Flask 0.6, OPTIONS неявно добавляется и обрабатывается стандартной обработкой запросов. Они должны быть указаны в качестве ключевых аргументов.

Параметры функции представления

Для внутреннего использования функции представления могут иметь некоторые атрибуты, настраивающие поведение, над которым функция представления обычно не имеет контроля. Следующие атрибуты могут быть предоставлены необязательно, чтобы либо переопределить некоторые значения по умолчанию для 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 для получения дополнительной информации.

Изменено в версии 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.

Параметры
  • args (Any) –
  • kwargs (Any) –
Тип возвращаемого значения

Any

flask.cli.shell_command = <Command shell>

Запуск интерактивной оболочки Python в контексте данного приложения Flask. Приложение заполнит по умолчанию пространство имён этой оболочки в соответствии с её конфигурацией.

Это полезно для выполнения небольших фрагментов управляющего кода без необходимости ручного конфигурирования приложения.

Параметры
  • args (Any) –
  • kwargs (Any) –
Тип возвращаемого значения

Any

© 2007–2022 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/2.1.x/api/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API