Spec-Zone.ru › Flask 2.2

API

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

Объект приложения

class flask.Flask(import_name, static_url_path=None, static_folder='static', static_host=None, host_matching=False, subdomain_matching=False, template_folder='templates', instance_path=None, instance_relative_config=False, root_path=None)

Объект flask реализует приложение WSGI и выступает в качестве центрального объекта. Ему передаётся имя модуля или пакета приложения. После создания он будет служить центральным регистром для функций представления, правил URL, конфигурации шаблонов и многого другого.

Имя пакета используется для поиска ресурсов внутри пакета или папки, содержащей модуль, в зависимости от того, разрешается ли параметр package в фактический пакет Python (папку с файлом __init__.py внутри) или стандартный модуль (просто файл .py).

Дополнительную информацию о загрузке ресурсов см. в open_resource().

Обычно вы создаёте экземпляр Flask в своём главном модуле или в файле __init__.py вашего пакета следующим образом:

from flask import Flask
app = Flask(__name__)

О первом параметре

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

Поэтому важно, что вы предоставляете там. Если вы используете один модуль, __name__ всегда является правильным значением. Однако, если вы используете пакет, обычно рекомендуется жёстко закодировать имя вашего пакета.

Например, если ваше приложение определено в yourapplication/app.py вы должны создать его с одной из двух версий ниже:

app = Flask('yourapplication')
app = Flask(__name__.split('.')[0])

Почему так? Приложение будет работать даже с __name__, благодаря тому, как происходит поиск ресурсов. Однако это усложнит отладку. Некоторые расширения могут делать предположения, основанные на имени импорта вашего приложения. Например, расширение Flask-SQLAlchemy будет искать код в вашем приложении, который вызвал запрос SQL в режиме отладки. Если имя импорта не настроено должным образом, эта информация об отладке теряется. (Например, он будет подбирать запросы SQL только в yourapplication.app и не в yourapplication.views.frontend).

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

В версии 1.0: Добавлены параметры host_matching и static_host.

В версии 1.0: Добавлен параметр subdomain_matching. Сопоставление поддоменов теперь нужно включать вручную. Установка SERVER_NAME не подразумевает его включения.

В версии 0.11: Добавлен параметр root_path.

В версии 0.8: Добавлены параметры instance_path и instance_relative_config.

В версии 0.7: Добавлены параметры static_url_path, static_folder, и template_folder.

Параметры
  • import_name (str) – имя пакета приложения
  • static_url_path (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]) – путь к корню файлов приложения. Это следует устанавливать вручную только в тех случаях, когда его нельзя определить автоматически, например, для пакетов с именованными пространствами имён.
aborter

Экземпляр aborter_class, созданный методом make_aborter(). Вызывается методом flask.abort() для повышения ошибок HTTP, а также может вызываться напрямую.

В версии 2.2: Перемещено из flask.abort, который вызывает этот объект.

aborter_class

псевдоним werkzeug.exceptions.Aborter

add_template_filter(f, name=None)

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

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

None

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

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

Изменения

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

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

None

add_template_test(f, name=None)

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

Регистрация правила для маршрутизации входящих запросов и построения URL-адресов. Декоратор route() является сокращением для вызова этого метода с аргументом view_func. Они эквивалентны:

@app.route("/")
def index():
    ...
def index():
    ...

app.add_url_rule("/", view_func=index)

См. Регистрации маршрутов URL.

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

Параметр methods по умолчанию ["GET"]. 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[Union[Callable[[...], Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, ...]]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]]], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int, Union[Headers, Mapping[str, Union[
  • str, List[str], Tuple[str, ...]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]]], WSGIApplication]], Callable[[...], Awaitable[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, ...]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]]], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes,
  • List[Любой], Отображение[строка, Любой], Итератор[строка], Итератор[байты]], целое число, Объединение[Headers, Отображение[строка, Объединение[строка, Список[строка], Кортеж[строка, ...]]], Последовательность[Кортеж[строка, Объединение[строка, Список[строка], Кортеж[строка, ...]]]]]], WSGIApplication]]]]]) – Функция представления для сопоставления с именем конечной точки.
  • provide_automatic_options (Необязательно[логическое значение]) – Добавить метод OPTIONS и автоматически отвечать на запросы OPTIONS.
  • options (Любой) – Дополнительные параметры, передаваемые объекту Rule.
Тип возвращаемого значения

None

after_request(f)

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

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

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

Параметры

f (flask.scaffold.T_after_request) –

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

flask.scaffold.T_after_request

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

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

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

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

app_context()

Создать AppContext. Используйте как with блок, чтобы добавить контекст, что приведет к тому, что current_app укажет на это приложение.

Контекст приложения автоматически добавляется RequestContext.push() при обработке запроса и при запуске команды CLI. Используйте его для ручного создания контекста вне этих ситуаций.

with app.app_context():
    init_db()

См. Контекст приложения.

Изменения

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

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

flask.ctx.AppContext

app_ctx_globals_class

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

async_to_sync(func)

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

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

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

Изменения

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

Параметры

func (Вызываемая функция[[...], Корутина]) –

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

Вызываемая функция[[…], Любой]

auto_find_instance_path()

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

Изменения

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

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

строка

before_first_request(f)

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

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

Устарело начиная с версии 2.2: Будет удалено в Flask 2.3. Запустите код настройки при создании приложения вместо этого.

Изменения

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

Параметры

f (flask.app.T_before_first_request) –

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

flask.app.T_before_first_request

before_first_request_funcs: t.List[ft.BeforeFirstRequestCallable]

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

Устарело начиная с версии 2.2: Будет удалено в Flask 2.3. Вместо этого выполняйте код настройки при создании приложения.

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

Введено в версии 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 (flask.scaffold.T_before_request) –

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

flask.scaffold.T_before_request

before_request_funcs: t.Dict[ft.AppOrBlueprintKey, t.List[ft.BeforeRequestCallable]]

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

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

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

blueprints: t.Dict[str, 'Blueprint']

Сопоставляет зарегистрированные имена бланкетов с объектами бланкетов. Словарь сохраняет порядок регистрации бланкетов. Бланкеты могут быть зарегистрированы несколько раз, этот словарь не отслеживает частоту их добавления.

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

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

cli

Группа команд Click для регистрации команд CLI для этого объекта. Команды доступны из команды flask после обнаружения приложения и регистрации бланкетов.

config

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

config_class

Псевдоним flask.config.Config

context_processor(f)

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

Параметры

f (flask.scaffold.T_template_context_processor) –

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

flask.scaffold.T_template_context_processor

create_global_jinja_loader()

Создает загрузчик для среды Jinja2. Может использоваться для переопределения только загрузчика, сохраняя остальные части неизменными. Не рекомендуется переопределять эту функцию. Вместо этого следует переопределить функцию jinja_loader().

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

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

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

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

flask.templating.DispatchingJinjaLoader

create_jinja_environment()

Создает среду Jinja на основе jinja_options и различных методов Jinja-связанных методов приложения. Изменение jinja_options после этого не повлияет. Также добавляет глобальные переменные и фильтры Flask в среду.

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

Изменено в версии 0.11: Environment.auto_reload устанавливается в соответствии с параметром конфигурации TEMPLATES_AUTO_RELOAD.

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

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

flask.templating.Environment

create_url_adapter(request)

Создает адаптер URL для данного запроса. Адаптер URL создаётся в момент, когда контекст запроса ещё не настроен, поэтому запрос передаётся явно.

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

Изменено в версии 1.0: SERVER_NAME больше не неявно включает соответствие по поддоменам. Используйте subdomain_matching.

Изменено в версии 0.9: Теперь его также можно вызвать без объекта запроса, когда адаптер URL создаётся для контекста приложения.

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

Параметры

request (Optional[flask.wrappers.Request]) –

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

Optional[werkzeug.routing.map.MapAdapter]

property debug: bool

Включен ли режим отладки. При использовании flask run для запуска сервера разработки, для необработанных исключений будет показан интерактивный отладчик, а сервер будет перезагружаться при изменении кода. Соответствует параметру конфигурации DEBUG. Может работать некорректно, если задан позднее.

Не включайте режим отладки при развертывании в рабочей среде.

Значение по умолчанию: False

default_config = {'APPLICATION_ROOT': '/', 'DEBUG': None, 'ENV': None, 'EXPLAIN_TEMPLATE_LOADING': False, 'JSONIFY_MIMETYPE': None, 'JSONIFY_PRETTYPRINT_REGULAR': None, 'JSON_AS_ASCII': None, 'JSON_SORT_KEYS': None, 'MAX_CONTENT_LENGTH': None, 'MAX_COOKIE_SIZE': 4093, 'PERMANENT_SESSION_LIFETIME': datetime.timedelta(days=31), 'PREFERRED_URL_SCHEME': 'http', 'PROPAGATE_EXCEPTIONS': None, 'SECRET_KEY': None, 'SEND_FILE_MAX_AGE_DEFAULT': None, 'SERVER_NAME': None, 'SESSION_COOKIE_DOMAIN': None, 'SESSION_COOKIE_HTTPONLY': True, 'SESSION_COOKIE_NAME': 'session', 'SESSION_COOKIE_PATH': None, 'SESSION_COOKIE_SAMESITE': None, 'SESSION_COOKIE_SECURE': False, 'SESSION_REFRESH_EACH_REQUEST': True, 'TEMPLATES_AUTO_RELOAD': None, 'TESTING': False, 'TRAP_BAD_REQUEST_ERRORS': None, 'TRAP_HTTP_EXCEPTIONS': False, 'USE_X_SENDFILE': False}

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

delete(rule, **options)

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

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

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

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

Callable[[flask.scaffold.T_route], flask.scaffold.T_route]

dispatch_request()

Выполняет распределение запросов. Сопоставляет URL и возвращает возвращаемое значение представления или обработчика ошибок. Это не обязательно должен быть объект ответа. Для преобразования возвращаемого значения в правильный объект ответа вызовите make_response().

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

Изменено в версии 0.7: Это больше не обрабатывает исключения, этот код был перемещен в новый full_dispatch_request().

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

Union[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],

Кортеж[строка, …]]]]]], WSGIApplication]

do_teardown_appcontext(exc=<object object>)

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

При обработке запроса контекст приложения удаляется после контекста запроса. См. do_teardown_request().

Вызываются все функции, помеченные декоратором teardown_appcontext(). Затем отправляется сигнал appcontext_tearing_down.

Вызывается методом AppContext.pop().

Изменения

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

Параметры

exc (Необязательно[BaseException]) –

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

None

do_teardown_request(exc=<object object>)

Вызывается после обработки запроса и возврата ответа, непосредственно перед удалением контекста запроса.

Вызываются все функции, помеченные декораторами teardown_request() и Blueprint.teardown_request(), если запрос обрабатывался голубым принтом. Наконец, отправляется сигнал request_tearing_down.

Вызывается методом RequestContext.pop(), который может быть отложен во время тестирования для сохранения доступа к ресурсам.

Параметры

exc (Необязательно[BaseException]) – Необработанное исключение, возбужденное во время обработки запроса. Обнаружено из текущей информации об исключении, если не передано. Передаётся каждой функции разбора.

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

None

Изменения

Изменено в версии 0.9: Добавлен аргумент exc.

endpoint(endpoint)

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

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

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

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

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

Вызываемый объект[[flask.scaffold.F], flask.scaffold.F]

ensure_sync(func)

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

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

Изменения

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

Параметры

func (Вызываемый объект) –

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

Вызываемый объект

property env: str

В какой среде работает приложение. Это сопоставляется с ключом конфигурации ENV.

Не включайте режим разработки при развертывании в производстве.

Значение по умолчанию: 'production'

Устарело начиная с версии 2.2: Будет удалено в Flask 2.3.

error_handler_spec: t.Dict[ft.AppOrBlueprintKey, t.Dict[t.Optional[int], t.Dict[t.Type[Exception], ft.ErrorHandlerCallable]]]

Структура данных зарегистрированных обработчиков ошибок в формате {scope: {code: {class: handler}}}. Ключ scope — это имя голубого принтера, для которого активны обработчики, или None для всех запросов. Ключ code — это код HTTP-статуса для HTTPException, или None для других исключений. Внутренний словарь сопоставляет классы исключений с функциями-обработчиками.

Для регистрации обработчика ошибок используйте декоратор errorhandler().

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

errorhandler(code_or_exception)

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

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

@app.errorhandler(404)
def page_not_found(error):
    return 'This page does not exist', 404

Вы также можете зарегистрировать обработчики для произвольных исключений:

@app.errorhandler(DatabaseError)
def special_exception_handler(error):
    return 'Database connection failed', 500
Изменения

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

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

Параметры

code_or_exception (Объединение[Тип[Исключение], целое число]) – код в виде целого числа для обработчика или произвольное исключение

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

Вызываемый объект[[flask.scaffold.T_error_handler], flask.scaffold.T_error_handler]

extensions: dict

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

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

Изменения

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

full_dispatch_request()

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

Изменения

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

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

flask.wrappers.Response

END_OF_DOCUMENT_MARKER
get(rule, **options)

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

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

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

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

Callable[[flask.scaffold.T_route], flask.scaffold.T_route]

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

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

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, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, …]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int, Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, …]]], Sequence[Tuple[str, Union[str, List[

str], Tuple[str, …]]]]]], WSGIApplication]

handle_url_build_error(error, endpoint, values)

Вызывается методом url_for(), если была поднята ошибка BuildError. Если этот метод возвращает значение, оно будет возвращено методом url_for, в противном случае ошибка будет повторно поднята.

Каждый метод в url_build_error_handlers вызывается с error, endpoint и values. Если метод возвращает None или поднимает BuildError, он пропускается. В противном случае, его возвращаемое значение возвращается методом url_for.

Параметры
  • error (werkzeug.routing.exceptions.BuildError) – Обрабатываемая активная ошибка BuildError.
  • endpoint (str) – Обрабатываемый конечный пункт.
  • values (Dict[str, Any]) – Переданные ключевые аргументы методу url_for.
Тип возвращаемого значения

str

handle_user_exception(e)

Этот метод вызывается всякий раз, когда возникает исключение, которое должно быть обработано. Специальным случаем является HTTPException, который передаётся методу handle_http_exception(). Этот метод либо возвращает значение ответа, либо повторно поднимает исключение с той же трассировкой.

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

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

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

Параметры

e (Exception) –

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

Union[werkzeug.exceptions.HTTPException, Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, …]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int, Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, …]]], Sequence[Tuple[str, Union[str, List[

str], Tuple[str, …]]]]]], WSGIApplication]

property has_static_folder: bool

True если static_folder установлено.

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

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

import_name

Имя пакета или модуля, к которому принадлежит этот объект. Не изменяйте его после установки конструктором.

inject_url_defaults(endpoint, values)

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

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

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

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

None

instance_path

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

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

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

iter_blueprints()

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

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

Введено в версии 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, если он задан.

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

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

jinja_options: dict = {}

Параметры, передаваемые среде Jinja в create_jinja_environment(). Изменение этих параметров после создания среды (обращение к jinja_env) не повлияет на неё.

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

Изменено в версии 1.1.0: Это dict вместо ImmutableDict, чтобы упростить настройку.

json: JSONProvider

Предоставляет доступ к методам JSON. Функции в flask.json вызывают методы этого провайдера, когда активен контекст приложения. Используется для обработки запросов и ответов JSON.

Экземпляр json_provider_class. Может быть настроен путём изменения этого атрибута в подклассе или путём присваивания после этого.

По умолчанию, DefaultJSONProvider, использует встроенную библиотеку Python json. Другой провайдер может использовать другую библиотеку JSON.

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

property json_decoder: Type[json.decoder.JSONDecoder]

Класс декодера JSON для использования. По умолчанию JSONDecoder.

Устаревшее с версии 2.2: Будет удалено в Flask 2.3. Настройте json_provider_class вместо этого.

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

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

property json_encoder: Type[json.encoder.JSONEncoder]

Класс кодировщика JSON для использования. По умолчанию JSONEncoder.

Устаревшее с версии 2.2: Будет удалено в Flask 2.3. Настройте json_provider_class вместо этого.

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

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

json_provider_class

Псевдоним flask.json.provider.DefaultJSONProvider

log_exception(exc_info)

Регистрирует исключение. Вызывается handle_exception(), если отладка отключена и непосредственно перед вызовом обработчика. По умолчанию записывает исключение как ошибку в logger.

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

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

Параметры

exc_info (Union[Tuple[type, BaseException, types.TracebackType], Tuple[None, None, None]]) –

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

None

property logger: logging.Logger

Стандартный Python Logger для приложения, с именем, таким же как name.

В режиме отладки уровень журнала level будет установлен на DEBUG.

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

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

Изменено в версии 1.1.0: Журнал принимает имя, совпадающее с name, а не жестко заданное значение "flask.app".

Изменено в версии 1.0.0: Поведение упрощено. Журнал всегда имеет имя "flask.app". Уровень устанавливается только во время конфигурации, он не проверяет app.debug каждый раз. Используется только один формат, а не разные, в зависимости от app.debug. Обработчики не удаляются, и обработчик добавляется только если обработчики не настроены.

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

make_aborter()

Создаёт объект для присваивания aborter. Этот объект вызывается flask.abort() для повышения HTTP-ошибок и может быть вызван напрямую.

По умолчанию создаёт экземпляр aborter_class, который по умолчанию равен werkzeug.exceptions.Aborter.

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

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

werkzeug.exceptions.Aborter

make_config(instance_relative=False)

Используется для создания атрибута config конструктором Flask. Параметр instance_relative передаётся из конструктора Flask (там он называется instance_relative_config) и указывает, должна ли конфигурация быть относительной к пути экземпляра или корневому пути приложения.

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

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

Параметры

instance_relative (bool) –

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

flask.config.Config

make_default_options_response()

Этот метод вызывается для создания ответ по умолчанию OPTIONS. Его можно изменить путём наследования для изменения поведения по умолчанию для ответов OPTIONS.

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

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

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

flask.wrappers.Response

make_response(rv)

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

Параметры

rv (Union[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, ...]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]]]], WSGIApplication]) –

значение, возвращаемое функцией представления. Функция представления должна вернуть ответ. Возвращение None, или завершение функции представления без возврата, запрещено. Для view_rv разрешены следующие типы:

str

Объект ответа создается со строкой, закодированной в UTF-8, в качестве тела.

bytes

Объект ответа создается с байтами в качестве тела.

dict

Словарь, который будет сериализован в JSON перед возвратом.

list

Список, который будет сериализован в JSON перед возвратом.

generator or iterator

Генератор, который возвращает str или bytes для потоковой передачи в качестве ответа.

tuple

Либо (body, status, headers), (body, status), или (body, headers), где body — любой из других разрешенных типов, status — строка или целое число, а headers — словарь или список кортежей (key, value). Если body — экземпляр response_class, status перезаписывает существующее значение, а headers расширяются.

response_class

Объект возвращается без изменений.

other Response class

Объект приводится к типу response_class.

callable()

Функция вызывается как WSGI-приложение. Результат используется для создания объекта ответа.

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

flask.wrappers.Response

Изменено в версии 2.2: Генератор будет преобразован в ответ потоковой передачи. Список будет преобразован в ответ JSON.

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

Изменено в версии 1.1: Словарь будет преобразован в ответ JSON.

Изменено в версии 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.T_route], flask.scaffold.T_route]

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.T_route], flask.scaffold.T_route]

preprocess_request()

Вызывается перед отправкой запроса. Вызывает зарегистрированные в приложении и текущем шаблоне url_value_preprocessors. Затем вызывает зарегистрированные в приложении и шаблоне before_request_funcs.

Если любой обработчик before_request() возвращает значение, отличное от None, это значение обрабатывается так, как если бы оно было значением возврата представления, и дальнейшая обработка запроса останавливается.

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

Optional[Union[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], Tuple[str, …]]]]]], WSGIApplication]]

process_response(response)

Может быть переопределён для изменения объекта ответа перед отправкой на WSGI-сервер. По умолчанию вызываются все функции, декорированные after_request().

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

Изменено в версии 0.5: Начиная с Flask 0.5, функции, зарегистрированные для выполнения после запроса, вызываются в обратном порядке регистрации.

Параметры

response (flask.wrappers.Response) – объект response_class.

Возвращает

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

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

flask.wrappers.Response

property propagate_exceptions: bool

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

Устарело начиная с версии 2.2: Будет удалено в Flask 2.3.

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

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

put(rule, **options)

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

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

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

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

Callable[[flask.scaffold.T_route], flask.scaffold.T_route]

redirect(location, code=302)

Создать объект ответа перенаправления.

Вызывается функцией flask.redirect(), и может быть вызван напрямую.

Параметры
  • location (str) – URL для перенаправления.
  • code (int) – Код состояния перенаправления.
Тип возвращаемого значения

werkzeug.wrappers.response.Response

Добавлена в версии 2.2: Перемещена из flask.redirect, который вызывает этот метод.

register_blueprint(blueprint, **options)

Регистрация Blueprint в приложении. Переданные ключевые аргументы переопределяют значения по умолчанию, установленные в синемпринте.

Вызывает метод register() синегопринта после записи синегопринта в blueprints приложения.

Параметры
  • blueprint (Blueprint) – Синийпринт для регистрации.
  • url_prefix – Маршруты синегопринта будут иметь префикс.
  • subdomain – Маршруты синегопринта будут соответствовать этому поддомену.
  • url_defaults – Маршруты синегопринта будут использовать эти значения по умолчанию для аргументов представления.
  • options (Any) – Дополнительные ключевые аргументы передаются в BlueprintSetupState. К ним можно получить доступ в обратных вызовах record().
Тип возвращаемого значения

None

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

Изменено в версии 2.0.1: Опция name может быть использована для изменения имени (с префиксом) синегопринта, с которым он регистрируется. Это позволяет зарегистрировать один и тот же синегопринт несколько раз с уникальными именами для url_for.

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

register_error_handler(code_or_exception, f)

Альтернативная функция добавления обработчика ошибок к декоратору errorhandler(), которая более проста в использовании для случаев, не использующих декораторы.

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

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

Параметры
  • code_or_exception (Union[Type[Exception], int]) –
END_OF_DOCUMENT_MARKER
  • f (Callable[[Any], Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, ...]]]]]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]]], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int, Union[Headers, Mapping[str, Union[str,
END_OF_DOCUMENT_MARKER
  • List[str], Tuple[str, ...]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]], WSGIApplication]]) –
Тип возвращаемого значения

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.T_route], flask.scaffold.T_route]

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_DEBUG переопределит debug.

Режим потоков включен по умолчанию.

Изменено в версии 0.10: Порт по умолчанию теперь выбирается из переменной SERVER_NAME.

secret_key

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

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

select_jinja_autoescape(filename)

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

Изменение истории

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

Параметры

filename (str) –

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

bool

property send_file_max_age_default: Optional[datetime.timedelta]

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

Устарело начиная с версии 2.2: Будет удалено в Flask 2.3. Используйте app.config["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

property session_cookie_name: str

Имя куки, установленное интерфейсом сеанса.

Устарело начиная с версии 2.2: Будет удалено в Flask 2.3. Используйте app.config["SESSION_COOKIE_NAME"] вместо этого.

session_interface: flask.sessions.SessionInterface = <flask.sessions.SecureCookieSessionInterface object>

используемый интерфейс сеанса. По умолчанию здесь используется экземпляр SecureCookieSessionInterface.

Изменение истории

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

shell_context_processor(f)

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

Изменение истории

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

Параметры

f (flask.app.T_shell_context_processor) –

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

flask.app.T_shell_context_processor

shell_context_processors: t.List[ft.ShellContextProcessorCallable]

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

Изменение истории

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

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

with app.app_context():
    ...

Когда блок with завершается (или вызывается ctx.pop()), функции завершения вызываются непосредственно перед тем, как контекст приложения становится неактивным. Поскольку контекст запроса обычно также управляет контекстом приложения, он также будет вызван при извлечении контекста запроса.

Когда функция завершения была вызвана из-за необработанной ошибки, ей будет передан объект ошибки. Если зарегистрирована функция errorhandler(), она обработает исключение, и функция завершения не получит его.

Функции завершения не должны вызывать исключения. Если они выполняют код, который может завершиться ошибкой, они должны поместить этот код в блок try/except и записывать любые ошибки.

Значения возврата функций завершения игнорируются.

Изменение истории

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

Параметры

f (flask.app.T_teardown) –

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

flask.app.T_teardown

teardown_appcontext_funcs: t.List[ft.TeardownCallable]

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

Изменение истории

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

teardown_request(f)

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

with app.test_request_context():
    ...

Когда блок with завершается (или вызывается ctx.pop()), функции завершения вызываются непосредственно перед тем, как контекст запроса станет неактивным.

Когда функция завершения была вызвана из-за необработанной ошибки, ей будет передан объект ошибки. Если зарегистрирована функция errorhandler(), она обработает исключение, и функция завершения не получит его.

Функции завершения не должны вызывать исключения. Если они выполняют код, который может завершиться ошибкой, они должны поместить этот код в блок try/except и записывать любые ошибки.

Параметры

f (flask.scaffold.T_teardown) –

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

flask.scaffold.T_teardown

teardown_request_funcs: t.Dict[ft.AppOrBlueprintKey, t.List[ft.TeardownCallable]]

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

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

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

template_context_processors: t.Dict[ft.AppOrBlueprintKey, t.List[ft.TemplateContextProcessorCallable]]

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

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

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

template_filter(name=None)

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

@app.template_filter()
def reverse(s):
    return s[::-1]
Параметры

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

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

Callable[[flask.app.T_template_filter], flask.app.T_template_filter]

template_folder

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

template_global(name=None)

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

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

В версии 0.10.

Параметры

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

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

Callable[[flask.app.T_template_global], flask.app.T_template_global]

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[[flask.app.T_template_test], flask.app.T_template_test]

property templates_auto_reload: bool

Перезагружать шаблоны при их изменении. Используется create_jinja_environment(). Включено по умолчанию в режиме отладки.

Устарело начиная с версии 2.2: Будет удалено в Flask 2.3. Используйте app.config["TEMPLATES_AUTO_RELOAD"] вместо этого.

Изменения

В версии 1.0: Это свойство было добавлено, но лежащая в основе конфигурация и поведение уже существовали.

test_cli_runner(**kwargs)

Создаёт CLI-запускатель для тестирования команд CLI. Смотрите Запуск команд с помощью CLI-запускателя.

Возвращает экземпляр 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 для того, чтобы исключения распространялись на тестовый клиент. В противном случае исключение будет обработано приложением (невидимо для тестового клиента), и единственным признаком ошибки AssertionError или другого исключения будет код состояния 500 в ответе тестового клиента. Смотрите атрибут testing. Например:

app.testing = True
client = app.test_client()

Тестовый клиент может быть использован в блоке with для отсрочки закрытия контекста до конца блока with. Это полезно, если вы хотите получить доступ к локальным переменным контекста для тестирования:

with app.test_client() as c:
    rv = c.get('/?vodka=42')
    assert request.args['vodka'] == '42'

Кроме того, вы можете передать необязательные ключевые аргументы, которые затем будут переданы конструктору приложения test_client_class. Например:

from flask.testing import FlaskClient

class CustomClient(FlaskClient):
    def __init__(self, *args, **kwargs):
        self._authentication = kwargs.pop("authentication")
        super(CustomClient,self).__init__( *args, **kwargs)

app.test_client_class = CustomClient
client = app.test_client(authentication='Basic ....')

См. FlaskClient для получения дополнительной информации.

Изменения

Изменено в версии 0.11: Добавлен **kwargs для поддержки передачи дополнительных ключевых аргументов в конструктор test_client_class.

В версии 0.7: Добавлен параметр use_cookies и возможность переопределения используемого клиента путём задания атрибута test_client_class.

Изменено в версии 0.4: Добавлена поддержка использования блока with для клиента.

Параметры
  • use_cookies (bool) —
  • kwargs (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 (Исключение) –

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

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, t.Dict[str, t.Any]], str]]

Список функций, вызываемых handle_url_build_error(), когда url_for() вызывает BuildError. Каждая функция вызывается с error, endpoint и values. Если функция возвращает None или вызывает исключение BuildError, она пропускается. В противном случае её возвращаемое значение возвращается url_for.

Изменения

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

url_default_functions: t.Dict[ft.AppOrBlueprintKey, t.List[ft.URLDefaultCallable]]

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

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

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

url_defaults(f)

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

Параметры

f (flask.scaffold.T_url_defaults) –

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

flask.scaffold.T_url_defaults

END_OF_DOCUMENT_MARKER
url_for(endpoint, *, _anchor=None, _method=None, _scheme=None, _external=None, **values)

Генерирует URL для указанного конечной точки с заданными значениями.

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

Конечная точка — это имя правила URL, обычно добавляемое с помощью @app.route() и, как правило, совпадает с именем функции представления. Маршрут, определённый в Blueprint, будет добавлять имя блинкетпа, разделенное ., к конечной точке.

В некоторых случаях, например, в сообщениях электронной почты, вам нужны URL, включающие схему и домен, как https://example.com/hello. Когда URL не создаётся в рамках активного запроса, по умолчанию используются внешние URL, но для этого необходимо установить SERVER_NAME, чтобы Flask знал, какой домен использовать. APPLICATION_ROOT и PREFERRED_URL_SCHEME также должны быть настроены по мере необходимости. Эта настройка используется только при отсутствии активного запроса.

Функции могут быть декорированы с помощью url_defaults(), чтобы изменить ключевые аргументы перед построением URL.

Если построение URL по какой-либо причине завершится неудачей, например, из-за неизвестной конечной точки или некорректных значений, вызывается метод приложения handle_url_build_error(). Если этот метод возвращает строку, она возвращается; в противном случае генерируется BuildError.

Параметры
  • endpoint (str) – Имя конечной точки, связанной с URL, который нужно сгенерировать. Если оно начинается с ., используется текущее имя блинкетпа (если оно есть).
  • _anchor (Optional[str]) – Если указано, добавляется как #anchor к URL.
  • _method (Optional[str]) – Если указано, генерируется URL, связанный с этим методом для конечной точки.
  • _scheme (Optional[str]) – Если указано, URL будет иметь эту схему, если это внешний URL.
  • _external (Optional[bool]) – Если указано, предпочтительно использовать внутренний URL (False) или требуется внешний URL (True). Внешние URL включают схему и домен. Когда URL не создаётся в рамках активного запроса, по умолчанию используются внешние URL.
  • values (Any) – Значения для использования в переменных частях правила URL. Неизвестные ключи добавляются как аргументы строки запроса, как ?a=b&c=d.
Тип возвращаемого значения

str

Новая версия с версии 2.2: Перемещена из flask.url_for, которая вызывает этот метод.

url_map

Объект Map для этого экземпляра. Вы можете использовать его для изменения конвертеров маршрутизации после создания класса, но перед подключением любых маршрутов. Пример:

from werkzeug.routing import BaseConverter

class ListConverter(BaseConverter):
    def to_python(self, value):
        return value.split(',')
    def to_url(self, values):
        return ','.join(super(ListConverter, self).to_url(value)
                        for value in values)

app = Flask(__name__)
app.url_map.converters['list'] = ListConverter
url_map_class

Псевдоним для werkzeug.routing.map.Map

url_rule_class

Псевдоним для werkzeug.routing.rules.Rule

url_value_preprocessor(f)

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

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

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

Параметры

f (flask.scaffold.T_url_value_preprocessor) –

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

flask.scaffold.T_url_value_preprocessor

url_value_preprocessors: t.Dict[ft.AppOrBlueprintKey, t.List[ft.URLValuePreprocessorCallable]]

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

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

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

property use_x_sendfile: bool

Включите эту опцию, чтобы использовать функцию X-Sendfile, если сервер её поддерживает, из send_file().

Устарело с версии 2.2: Будет удалено в Flask 2.3. Используйте app.config["USE_X_SENDFILE"] вместо этого.

view_functions: t.Dict[str, t.Callable]

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

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

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

wsgi_app(environ, start_response)

Файл WSGI приложения. Это не реализовано в __call__(), чтобы средствами middleware можно было работать, не теряя ссылку на объект приложения. Вместо этого:

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

END_OF_DOCUMENT_MARKER ```
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[Union[Callable[[...], Union[Response, str, bytes, Список[Любой], Отображение[str, Любой], Итератор[str], Итератор[bytes], Кортеж[Union[Response, str, bytes, Список[Любой], Отображение[str, Любой], Итератор[str], Итератор[bytes]], Union[Headers, Отображение[str, Union[str, Список[str], Кортеж[str, ...]]], Последовательность[Кортеж[str, Union[str, Список[str], Кортеж[str, ...]]]]]], Кортеж[Union[Response, str, bytes, Список[Любой], Отображение[str, Любой], Итератор[str], Итератор[bytes]], int], Кортеж[Union[Response, str, bytes, Список[Любой], Отображение[str, Любой], Итератор[str], Итератор[bytes]], int, Union[Headers, Отображение[str, Union[
END_OF_DOCUMENT_MARKER
  • str, List[str], Tuple[str, ...]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]], WSGIApplication]], Callable[[...], Awaitable[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, ...]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]]], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes,
  • List[Любой], Отображение[str, Любой], Итератор[str], Итератор[bytes]], int, Объединение[Headers, Отображение[str, Объединение[str, Список[str], Кортеж[str, ...]]], Последовательность[Кортеж[str, Объединение[str, Список[str], Кортеж[str, ...]]]]]], WSGIApplication]]]]]) –
  • provide_automatic_options (Необязательно[bool]) –
  • options (Любой) –
Тип возвращаемого значения

None

Return type

None

after_app_request(f)

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

Параметры

f (flask.blueprints.T_after_request) –

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

flask.blueprints.T_after_request

after_request(f)

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

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

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

Параметры

f (flask.scaffold.T_after_request) –

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

flask.scaffold.T_after_request

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

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

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

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

app_context_processor(f)

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

Параметры

f (flask.blueprints.T_template_context_processor) –

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

flask.blueprints.T_template_context_processor

app_errorhandler(code)

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

Параметры

code (Объединение[Тип[Исключение], int]) –

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

Вызываемая функция[[flask.blueprints.T_error_handler], flask.blueprints.T_error_handler]

app_template_filter(name=None)

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

Параметры

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

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

Вызываемая функция[[flask.blueprints.T_template_filter], flask.blueprints.T_template_filter]

app_template_global(name=None)

Регистрирует пользовательскую глобальную переменную шаблона, доступную на уровне всей программы. Подобно Flask.template_global(), но для шаблона.

Изменения

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

Параметры

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

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

Вызываемая функция[[flask.blueprints.T_template_global], flask.blueprints.T_template_global]

app_template_test(name=None)

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

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

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

Параметры

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

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

Callable[[flask.blueprints.T_template_test], flask.blueprints.T_template_test]

app_url_defaults(f)

Аналогично url_defaults(), но на уровне всего приложения.

Параметры

f (flask.blueprints.T_url_defaults) –

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

flask.blueprints.T_url_defaults

app_url_value_preprocessor(f)

Аналогично url_value_preprocessor(), но на уровне всего приложения.

Параметры

f (flask.blueprints.T_url_value_preprocessor) –

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

flask.blueprints.T_url_value_preprocessor

before_app_first_request(f)

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

Устарело начиная с версии 2.2: Будет удалено в Flask 2.3. Вместо этого выполняйте код настройки при создании приложения.

Параметры

f (flask.blueprints.T_before_first_request) –

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

flask.blueprints.T_before_first_request

before_app_request(f)

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

Параметры

f (flask.blueprints.T_before_request) –

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

flask.blueprints.T_before_request

before_request(f)

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

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

@app.before_request
def load_user():
    if "user_id" in session:
        g.user = db.session.get(session["user_id"])

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

Параметры

f (flask.scaffold.T_before_request) –

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

flask.scaffold.T_before_request

before_request_funcs: t.Dict[ft.AppOrBlueprintKey, t.List[ft.BeforeRequestCallable]]

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

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

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

cli

Группа команд Click для регистрации команд CLI для этого объекта. Команды доступны из команды flask после обнаружения приложения и регистрации голубопечатных.

context_processor(f)

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

Параметры

f (flask.scaffold.T_template_context_processor) –

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

flask.scaffold.T_template_context_processor

delete(rule, **options)

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

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

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

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

Callable[[flask.scaffold.T_route], flask.scaffold.T_route]

endpoint(endpoint)

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

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

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

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

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

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

error_handler_spec: t.Dict[ft.AppOrBlueprintKey, t.Dict[t.Optional[int], t.Dict[t.Type[Exception], ft.ErrorHandlerCallable]]]

Структура данных зарегистрированных обработчиков ошибок в формате {scope: {code: {class: handler}}}. Ключ scope — имя голубопечати, для которой активны обработчики, или None для всех запросов. Ключ code — код HTTP-статуса для HTTPException, или None для других исключений. Внутренний словарь сопоставляет классы исключений с функциями-обработчиками.

Для регистрации обработчика ошибок используйте декоратор errorhandler().

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

END_OF_DOCUMENT_MARKER
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[[flask.scaffold.T_error_handler], flask.scaffold.T_error_handler]

get(rule, **options)

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

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

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

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

Callable[[flask.scaffold.T_route], flask.scaffold.T_route]

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.

import_name

Имя пакета или модуля, к которому принадлежит этот объект. Не изменяйте его после установки конструктором.

property jinja_loader: Optional[jinja2.loaders.FileSystemLoader]

Загрузчик Jinja для шаблонов этого объекта. По умолчанию это класс jinja2.loaders.FileSystemLoader для template_folder, если оно задано.

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

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

property json_decoder: Optional[Type[json.decoder.JSONDecoder]]

Локальный для Blueprint класс декодера JSON для использования. Установлено в None для использования кода приложения.

Устарело начиная с версии 2.2: Будет удалено в Flask 2.3. Настройте json_provider_class вместо этого.

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

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

property json_encoder: Optional[Type[json.encoder.JSONEncoder]]

Локальный для Blueprint класс кодировщика JSON для использования. Установлено в None для использования кода приложения.

Устарело начиная с версии 2.2: Будет удалено в Flask 2.3. Настройте json_provider_class вместо этого.

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

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

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.T_route], flask.scaffold.T_route]

post(rule, **options)

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

Changelog

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

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

Callable[[flask.scaffold.T_route], flask.scaffold.T_route]

put(rule, **options)

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

Changelog

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

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

Callable[[flask.scaffold.T_route], flask.scaffold.T_route]

record(func)

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

Параметры

func (Callable) –

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

None

record_once(func)

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

Параметры

func (Callable) –

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

None

register(app, options)

Вызывается Flask.register_blueprint() для регистрации всех представлений и обратных вызовов, зарегистрированных в бланкете, с приложением. Создаёт BlueprintSetupState и вызывает каждый обратный вызов record() с ним.

Параметры
  • app (Flask) – Приложение, с которым регистрируется бланкет.
  • options (dict) – Аргументы ключевых слов, переданные из register_blueprint().
Тип возвращаемого значения

None

Changelog

Изменено в версии 2.0.1: Вложенные бланкеты регистрируются с их точечным именем. Это позволяет различным бланкетам с одинаковым именем быть вложенными в различных местах.

Изменено в версии 2.0.1: Опция name может использоваться для изменения (предварительно точечного) имени, с которым регистрируется бланкет. Это позволяет регистрировать один и тот же бланкет несколько раз с уникальными именами для url_for.

Изменено в версии 2.0.1: Регистрация одного и того же бланкета с одинаковым именем несколько раз устарела и станет ошибкой в Flask 2.1.

register_blueprint(blueprint, **options)

Регистрирует Blueprint в этом бланкете. Аргументы ключевых слов, переданные в этот метод, переопределят значения по умолчанию, заданные в бланкете.

Changelog

Изменено в версии 2.0.1: Опция name может использоваться для изменения (предварительно точечного) имени, с которым регистрируется бланкет. Это позволяет регистрировать один и тот же бланкет несколько раз с уникальными именами для url_for.

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

Параметры
  • blueprint (flask.blueprints.Blueprint) –
  • options (Any) –
Тип возвращаемого значения

None

register_error_handler(code_or_exception, f)

Альтернативная функция для присоединения обработчика ошибок к декоратору errorhandler(), которая более удобна для использования без декораторов.

Changelog

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

Параметры
  • code_or_exception (Union[Type[Exception], int]) –
  • f (Callable[[Any], Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, ...]]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]]], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int, Union[Headers, Mapping[str, Union[str,
  • List[str], Tuple[str, ...]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]]], WSGIApplication]]) –
Тип возвращаемого значения

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.T_route], flask.scaffold.T_route]

send_static_file(filename)

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

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

Введено в версии 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 (flask.blueprints.T_teardown) –

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

flask.blueprints.T_teardown

teardown_request(f)

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

with app.test_request_context():
    ...

Когда блок with завершается (или вызывается ctx.pop()), функции разбора вызываются непосредственно перед тем, как контекст запроса становится неактивным.

Когда функция разбора была вызвана из-за необработанного исключения, ей будет передан объект ошибки. Если зарегистрирован errorhandler(), он обработает исключение, и функция разбора его не получит.

Функции разбора не должны генерировать исключения. Если они выполняют код, который может потерпеть неудачу, они должны окружать этот код блоком try/except и регистрировать любые ошибки.

Значения возврата функций разбора игнорируются.

Параметры

f (flask.scaffold.T_teardown) –

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

flask.scaffold.T_teardown

teardown_request_funcs: t.Dict[ft.AppOrBlueprintKey, t.List[ft.TeardownCallable]]

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

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

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

template_context_processors: t.Dict[ft.AppOrBlueprintKey, t.List[ft.TemplateContextProcessorCallable]]

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

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

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

template_folder

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

url_default_functions: t.Dict[ft.AppOrBlueprintKey, t.List[ft.URLDefaultCallable]]

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

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

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

url_defaults(f)

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

Параметры

f (flask.scaffold.T_url_defaults) –

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

flask.scaffold.T_url_defaults

END_OF_DOCUMENT_MARKER
url_value_preprocessor(f)

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

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

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

Параметры

f (flask.scaffold.T_url_value_preprocessor) –

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

flask.scaffold.T_url_value_preprocessor

url_value_preprocessors: t.Dict[ft.AppOrBlueprintKey, t.List[ft.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]

Если существует заголовок forwarded, это список всех IP-адресов от IP-адреса клиента до последнего прокси-сервера.

classmethod application(f)

Декорирует функцию как ответчик, который принимает запрос в качестве последнего аргумента. Это работает как responder() декоратор, но функция получает объект запроса в качестве последнего аргумента, а объект запроса автоматически закрывается:

@Request.application
def my_wsgi_app(request):
    return Response('Hello World!')

Начиная с Werkzeug 0.14, HTTP-исключения автоматически обрабатываются и преобразуются в ответы, вместо того, чтобы вызывать ошибку.

Параметры

f (Callable[[Request], 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]

Зарегистрированное имя текущего blueprint.

Будет None , если конечная точка не принадлежит blueprint, или если сопоставление URL не выполнено или ещё не выполнено.

Это не обязательно соответствует имени, с которым blueprint был создан. Он может быть вложен или зарегистрирован под другим именем.

property blueprints: List[str]

Зарегистрированные имена текущего blueprint и родительских blueprint.

Будет пустым списком, если нет текущего blueprint или если сопоставление URL не выполнено.

Changelog

New in version 2.0.1.

property cache_control: werkzeug.datastructures.RequestCacheControl

Объект RequestCacheControl для входящих заголовков управления кешем.

close()

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

Changelog

New in version 0.9.

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

None

content_encoding

Поле заголовка сущности Content-Encoding используется как модификатор типа среды. При его наличии его значение указывает, какие дополнительные кодировки содержимого были применены к телу сущности, а следовательно, какие механизмы декодирования должны быть применены для получения типа среды, на который ссылается поле заголовка Content-Type.

Changelog

New in version 0.9.

property content_length: Optional[int]

Поле заголовка сущности Content-Length указывает размер тела сущности в байтах или, в случае метода HEAD, размер тела сущности, который был бы отправлен, если бы запрос был GET.

content_md5

Поле заголовка сущности Content-MD5, как определено в RFC 1864, представляет собой дайджест MD5 тела сущности с целью обеспечения проверки целостности сообщения от конца до конца (MIC) тела сущности. (Примечание: MIC хорошо подходит для обнаружения случайных изменений тела сущности во время передачи, но не является доказательством против злонамеренных атак.)

Changelog

New in version 0.9.

content_type

Поле заголовка сущности Content-Type указывает тип среды тела сущности, отправляемого получателю, или, в случае метода HEAD, тип среды, который был бы отправлен, если бы запрос был GET.

property cookies: werkzeug.datastructures.ImmutableMultiDict[str, str]

dict с содержимым всех cookie, переданных вместе с запросом.

property data: bytes

Содержит данные входящего запроса как строку в случае, если они были отправлены с MIME-типом, который Werkzeug не обрабатывает.

date

Поле общего заголовка Date представляет собой дату и время, в которые было создано сообщение, имея те же семантические значения, что и orig-date в RFC 822.

Changelog

Изменено в версии 2.0: Объект datetime является timezone-aware.

dict_storage_class

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

END_OF_DOCUMENT_MARKER
property endpoint: Optional[str]

Конечная точка, соответствующая адресу запроса.

Будет None в случае неудачного сопоставления или если сопоставление ещё не выполнено.

В сочетании с view_args может использоваться для восстановления исходного или изменённого адреса.

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)

Считывает буферизованные входящие данные от клиента в один объект типа bytes. По умолчанию данные кэшируются, но это поведение можно изменить, установив 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

Проверка, указывает ли MIME-тип на данные JSON, либо application/json, либо application/*+json.

is_multiprocess

Булево значение, равное True , если приложение обслуживается сервером WSGI, который запускает несколько процессов.

is_multithread

Булево значение, равное True , если приложение обслуживается многопоточным сервером WSGI.

is_run_once

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

property is_secure: bool

True , если запрос был выполнен с помощью защищенного протокола (HTTPS или WSS).

property json: 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]

Параметры MIME-типа в виде словаря. Например, если тип контента text/html; charset=utf-8 , то параметры будут {'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 (так называемый «referrer», хотя в поле заголовка допущена опечатка).

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. Полезно для предотвращения изменения потока из промежуточного ПО.

property stream: IO[bytes]

Если данные формы входящего запроса не были закодированы с известным типом MIME, данные хранятся в этом потоке без изменений для последующего использования. В большинстве случаев лучше использовать data, которое предоставит данные в виде строки. Поток возвращает данные только один раз.

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

Изменения

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

property url: str

Полный URL-адрес запроса со схемой, хостом, корневым путем, путем и строкой запроса.

property url_charset: str

Кодировка символов, предполагаемая для URL-адресов. По умолчанию принимает значение charset.

Изменения

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

Изменения

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

property user_agent: werkzeug.user_agent.UserAgent

Пользовательский агент. Используйте user_agent.string для получения значения заголовка. Установите user_agent_class в подкласс UserAgent для предоставления обработки других свойств или других расширенных данных.

Изменения

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

Изменения

Изменено в версии 2.0: Для запросов GET присутствуют только args, а не form.

view_args: Optional[Dict[str, Any]] = None

Словарь аргументов представления, соответствующих запросу. Если при сопоставлении произошла ошибка, это будет None.

property want_form_data_parsed: bool

True если метод запроса содержит контент. По умолчанию это true, если отправлен Content-Type.

Изменения

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

flask.request

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

Это прокси. См. Примечания по прокси для получения дополнительной информации.

Объект запроса является экземпляром Request.

Объекты ответа

class flask.Response(response=None, status=None, headers=None, mimetype=None, content_type=None, direct_passthrough=False)

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

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

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

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

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

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

Добавить тег etag для текущего ответа, если его еще нет.

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

Изменено в версии 2.0: Для генерации значения используется SHA-1. MD5 может быть недоступен в некоторых средах.

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

None

age

Поле заголовка ответа Age указывает оценку отправителя времени с момента генерации ответа (или его перевалидации) на сервере источника.

Значения Age — это неотрицательные десятичные целые числа, представляющие время в секундах.

property allow: werkzeug.datastructures.HeaderSet

Поле Allow заголовка сущности перечисляет набор методов, поддерживаемых ресурсом, идентифицируемым URI запроса. Цель этого поля — строго информировать получателя о допустимых методах, связанных с ресурсом. Заголовок Allow ОБЯЗАТЕЛЬНО должен быть присутствовать в ответе 405 (Метод не разрешен).

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 заголовка сущности используется в качестве модификатора MIME-типа. При его наличии значение указывает, какие дополнительные кодировки содержимого были применены к телу сущности, и, следовательно, какие механизмы декодирования необходимо применить для получения MIME-типа, указанного в заголовке 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. Беззвучно терпит неудачу, если ключ не существует.

Параметры
  • key (str) – ключ (имя) cookie для удаления.
  • path (str) – если cookie, который нужно удалить, был ограничен путем, путь должен быть определен здесь.
  • domain (Optional[str]) – если cookie, который нужно удалить, был ограничен доменом, этот домен должен быть определен здесь.
  • secure (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)

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

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

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

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

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

Response

freeze()

Подготавливает объект ответа для сериализации. Выполняет следующие действия:

  • Буферизует тело ответа в список, игнорируя implicity_sequence_conversion и direct_passthrough.
  • Устанавливает заголовок Content-Length.
  • Генерирует заголовок ETag если он ещё не задан.
Changelog

Изменено в версии 2.1: Удалён параметр no_etag.

Изменено в версии 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 требует пустого ответа, возвращается пустая итерируемая последовательность.

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

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

Параметры

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

Возвращает

итерируемый объект ответа.

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

Iterable[bytes]

get_data(as_text=False)

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

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

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

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

Введено в версии 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 среды. Кроме того, длина содержимого автоматически устанавливается в ноль для определённых кодов состояния.

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

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

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

Параметры

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

Возвращает

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

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

werkzeug.datastructures.Headers

get_wsgi_response(environ)

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

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

Введено в версии 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 является списком или кортежем.

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

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

property is_streamed: bool

Если ответ передаётся потоком (ответ не является итерируемым объектом с информацией о длине), это свойство равно True. В данном случае «потоковый» означает, что нет информации о количестве итераций. Это обычно True если в объект ответа передаётся генератор.

Это полезно для проверки перед применением некоторого пост-фильтра, который не должен применяться к потоковым ответам.

iter_encoded()

Итерация по закодированному ответу с использованием кодировки ответа. Если объект ответа вызывается как WSGI-приложение, возвращаемое значение этого метода используется в качестве итератора приложения, если не был активирован direct_passthrough.

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

Итератор[байты]

property json: Optional[Any]

Разбор данных JSON, если mimetype указывает на JSON (application/json, см. is_json).

Вызов get_json() со значениями по умолчанию.

last_modified

Поле заголовка сущности Last-Modified указывает дату и время, когда исходный сервер полагает, что вариант был в последний раз изменён.

Changelog

Изменено в версии 2.0: Объект datetime учитывает часовой пояс.

location

Поле заголовка ответа Location используется для перенаправления получателя в местоположение, отличное от Request-URI, для завершения запроса или определения нового ресурса.

make_conditional(request_or_environ, accept_ranges=False, complete_length=None)

Делает ответ условным относительно запроса. Этот метод лучше всего работает, если для ответа уже определён etag. Метод add_etag можно использовать для этого. Если вызван без etag, устанавливается только заголовок даты.

Не делает ничего, если метод запроса в запросе или окружении — не GET или HEAD.

Для оптимальной производительности при обработке запросов с диапазонами рекомендуется, чтобы объект данных ответа реализовывал методы seekable, seek и tell, как описано в io.IOBase. Объекты, возвращаемые методом wrap_file(), автоматически реализуют эти методы.

Не удаляет тело ответа, поскольку функция __call__() автоматически делает это за нас.

Возвращает self, чтобы вы могли выполнить return resp.make_conditional(req), но изменяет объект на месте.

Параметры
  • request_or_environ (Объединение[WSGIEnvironment, Запрос]) – объект запроса или WSGI-среда, используемая для условного применения к ответу.
  • accept_ranges (Объединение[булево, строка]) – Этот параметр определяет значение заголовка Accept-Ranges. Если False, заголовок не устанавливается. Если True, он будет установлен на "bytes". Если None, он будет установлен на "none". Если строка, будет использовано это значение.
  • complete_length (Необязательный[целое число]) – Будет использоваться только в допустимых запросах с диапазоном. Он установит значение полной длины Content-Range и вычислит фактическое значение Content-Length. Этот параметр обязателен для успешного завершения запросов с диапазонами.
Исключения

RequestedRangeNotSatisfiable, если заголовок Range не удалось разобрать или удовлетворить.

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

Ответ

Changelog

Изменено в версии 2.0: Обработка диапазонов пропускается, если длина равна 0, вместо повышения ошибки 416 Range Not Satisfiable.

make_sequence()

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

Changelog

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

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

None

property max_cookie_size: int

Только для чтения просмотр конфигурационного ключа MAX_COOKIE_SIZE.

См. max_cookie_size в документации Werkzeug.

property mimetype: 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, но заголовок всё равно будет установлен.

Параметры
  • key (str) – ключ (имя) cookie, который нужно установить.
  • value (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.

Параметры

value (Union[bytes, str]) –

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

None

Сессии

Если вы установили Flask.secret_key (или настроили его из SECRET_KEY), вы можете использовать сессии в приложениях Flask. Сессия позволяет запоминать информацию от одного запроса к другому. Flask делает это, используя подписанный cookie. Пользователь может просматривать содержимое сессии, но не может его изменить, не зная секретный ключ, поэтому убедитесь, что вы установили его в сложном и непредсказуемом виде.

Для доступа к текущей сессии вы можете использовать объект session:

class flask.session

Объект сессии работает практически так же, как обычный словарь, с той разницей, что он отслеживает изменения.

Это прокси. См. Примечания по прокси для получения дополнительной информации.

Следующие атрибуты представляют интерес:

new

True если сессия новая, False в противном случае.

Интерфейс сессии

Изменения

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

Интерфейс сессии предоставляет простой способ заменить реализацию сессии, используемую Flask.

END_OF_DOCUMENT_MARKER
class flask.sessions.SessionInterface

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

Объект сессии, возвращаемый методом open_session(), должен предоставлять интерфейс типа словаря, а также свойства и методы из SessionMixin. Мы рекомендуем просто создать подкласс словаря dict и добавить в него этот миксин:

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.config[“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, если куки должна быть secure. В данный момент просто возвращает значение настройки 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

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

None

should_set_cookie(app, session)

Используется бэкендами сессий для определения, должен ли заголовок Set-Cookie устанавливаться для этого куки сессии для данного ответа. Если сессия была изменена, куки устанавливается. Если сессия постоянна и параметр SESSION_REFRESH_EACH_REQUEST конфигурации равен true, куки всегда устанавливается.

Эта проверка обычно пропускается, если сессия была удалена.

Изменения

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

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

bool

class flask.sessions.SecureCookieSessionInterface

Стандартный интерфейс сессий, хранящий сессии в подписанных куках через модуль itsdangerous.

static digest_method(string=b'', *, usedforsecurity=True)

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

key_derivation = 'hmac'

название поддерживаемого itsdangerous алгоритма вывода ключа. По умолчанию используется hmac.

open_session(app, request)

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

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

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

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

Optional[flask.sessions.SecureCookieSession]

salt = 'cookie-session'

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

save_session(app, session, response)

Вызывается в конце каждого запроса после генерации ответа, перед удалением контекста запроса. Пропускается, если is_null_session() возвращает True.

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

None

serializer = <flask.json.tag.TaggedJSONSerializer object>

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

session_class

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

class flask.sessions.SecureCookieSession(initial=None)

Базовый класс для сессий, основанных на подписанных cookie.

Этот бэкэнд сессий установит атрибуты modified и accessed. Он не может надёжно отслеживать, является ли сессия новой (в отличие от пустой), поэтому new остаётся жёстко закодированным в False.

Параметры

initial (Any) –

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

None

accessed = False

заголовок, который позволяет прокси-серверам кеширования кешировать разные страницы для разных пользователей.

get(key, default=None)

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

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

Any

modified = False

При изменении данных устанавливается в True. Отслеживается только сам словарь сессии; если сессия содержит изменяемые данные (например, вложенный словарь), то это значение должно быть установлено в True вручную при изменении этих данных. Файл cookie сессии будет записан в ответ только в том случае, если это значение 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

class flask.sessions.SessionMixin

Расширяет базовый словарь атрибутами сессии.

accessed = True

Некоторые реализации могут определять, когда данные сессии читаются или записываются, и устанавливать это значение при этом. Значение по умолчанию миксина жёстко закодировано как True.

modified = True

Некоторые реализации могут определять изменения в сессии и устанавливать это значение при этом. Значение по умолчанию миксина жёстко закодировано как True.

property permanent: bool

Это отражает ключ '_permanent' в словаре.

Замечание

Конфигурация PERMANENT_SESSION_LIFETIME может быть целым числом или timedelta. Атрибут permanent_session_lifetime всегда является timedelta.

Тестовый клиент

class flask.testing.FlaskClient(*args, **kwargs)

Работает как обычный тестовый клиент Werkzeug, но имеет информацию о контекстах Flask, чтобы отложить очистку контекста запроса до конца блока with. Для общей информации о том, как использовать этот класс, обратитесь к werkzeug.test.Client.

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

Изменено в версии 0.12: app.test_client() включает предопределённую по умолчанию среду, которую можно установить после создания объекта app.test_client() в client.environ_base.

Основное использование описано в главе Тестирование приложений Flask.

Параметры
  • args (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)

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

Параметры
  • name (str) – Имя атрибута для получения.
  • default (Optional[Any]) – Возвращаемое значение, если атрибут отсутствует.
Тип возвращаемого значения

Any

Изменения

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

pop(name, default=<object object>)

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

Параметры
  • name (str) – Имя атрибута для удаления.
  • default (Any) – Возвращаемое значение, если атрибут отсутствует, вместо повышения KeyError.
Тип возвращаемого значения

Any

Изменения

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

setdefault(name, default=None)

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

Параметры
  • name (str) – Имя атрибута для получения.
  • default (Optional[Any]) – Возвращаемое значение, если атрибут отсутствует.
Тип возвращаемого значения

Any

Изменения

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

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

flask.current_app

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

Доступен только при наличии контекста приложения. Это происходит автоматически во время запросов и команд из командной строки. Его можно вручную управлять с помощью app_context().

Это провайдер. Для получения дополнительной информации см. Примечания по провайдерам.

flask.has_request_context()

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

class User(db.Model):

    def __init__(self, username, remote_addr=None):
        self.username = username
        if remote_addr is None and has_request_context():
            remote_addr = request.remote_addr
        self.remote_addr = remote_addr

В качестве альтернативы можно проверить истинность любого из связанных с контекстом объектов (таких как request или g):

class User(db.Model):

    def __init__(self, username, remote_addr=None):
        self.username = username
        if remote_addr is None and request:
            remote_addr = request.remote_addr
        self.remote_addr = remote_addr
Изменения

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

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

bool

flask.copy_current_request_context(f)

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

Пример:

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, *, _anchor=None, _method=None, _scheme=None, _external=None, **values)

Генерирует URL для указанного конечной точки с заданными значениями.

Требуется активный запрос или контекст приложения, и вызывает current_app.url_for(). Полная документация находится в этом методе.

Параметры
  • endpoint (str) – Имя конечной точки, связанной с генерируемым URL. Если это начинается с ., будет использоваться имя текущего бьюпринта (если таковое имеется).
  • _anchor (Optional[str]) – Если указано, добавить это как #anchor к URL.
  • _method (Optional[str]) – Если указано, сгенерировать URL, связанный с этим методом для конечной точки.
  • _scheme (Optional[str]) – Если указано, URL будет иметь этот схему, если это внешний URL.
  • _external (Optional[bool]) – Если указано, предпочесть внутренний URL (False) или потребовать внешний URL (True). Внешние URL включают схему и домен. Когда нет активного запроса, URL по умолчанию являются внешними.
  • values (Any) – Значения для использования в переменных частях правила URL. Неизвестные ключи добавляются в качестве аргументов строки запроса, как ?a=b&c=d.
Тип возвращаемого значения

str

Изменено в версии 2.2: Вызывает current_app.url_for, позволяя приложению переопределить поведение.

Изменения

Изменено в версии 0.10: Добавлен параметр _scheme.

Изменено в версии 0.9: Добавлены параметры _anchor и _method.

Изменено в версии 0.9: Вызывает app.handle_url_build_error при ошибках построения.

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

Вызывает HTTPException для указанного кода состояния.

Если current_app доступен, он вызовет свой объект aborter, в противном случае он будет использовать werkzeug.exceptions.abort().

Параметры
  • code (Union[int, BaseResponse]) – Код состояния исключения, который должен быть зарегистрирован в app.aborter.
  • args (Any) – Передаётся в исключение.
  • kwargs (Any) – Передаётся в исключение.
Тип возвращаемого значения

те.NoReturn

Новая в версии 2.2: Вызывает current_app.aborter если доступен, вместо использования по умолчанию Werkzeug abort.

END_OF_DOCUMENT_MARKER
flask.redirect(location, code=302, Response=None)

Создать объект ответа перенаправления.

Если доступен current_app, он будет использовать его метод redirect(), в противном случае будет использоваться werkzeug.utils.redirect().

Параметры
  • location (str) – URL для перенаправления.
  • code (int) – Код состояния для перенаправления.
  • Response (Optional[Type[BaseResponse]]) – Класс ответа для использования. Не используется, когда current_app активен, который использует app.response_class.
Тип возвращаемого значения

BaseResponse

Добавлена в версии 2.2: Вызывает current_app.redirect, если доступно, вместо всегда использования по умолчанию Werkzeug redirect.

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 (Union[Callable[[flask.typing.ResponseClass], flask.typing.ResponseClass], Callable[[flask.typing.ResponseClass], Awaitable[flask.typing.ResponseClass]]]) –

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

Union[Callable[[flask.typing.ResponseClass], flask.typing.ResponseClass], Callable[[flask.typing.ResponseClass], Awaitable[flask.typing.ResponseClass]]]

flask.send_file(path_or_file, mimetype=None, as_attachment=False, download_name=None, conditional=True, etag=True, last_modified=None, max_age=None)

Отправьте содержимое файла клиенту.

Первый аргумент может быть путем к файлу или файлоподобным объектом. Пути предпочтительны в большинстве случаев, поскольку Werkzeug может управлять файлом и получать дополнительную информацию из пути. Передача файлоподобного объекта требует, чтобы файл был открыт в двоичном режиме, и она в основном полезна при создании файла в памяти с помощью io.BytesIO.

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

Если сервер WSGI задаёт file_wrapper в environ, он используется; в противном случае используется встроенный обертка Werkzeug. В качестве альтернативы, если HTTP-сервер поддерживает X-Sendfile, настройка Flask с USE_X_SENDFILE = True сообщит серверу отправить указанный путь, что гораздо эффективнее, чем чтение его в Python.

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

Response

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

Изменено в версии 2.0: download_name заменяет параметр attachment_filename. Если as_attachment=False, он передаётся с Content-Disposition: inline.

Изменено в версии 2.0: max_age заменяет параметр cache_timeout. conditional включён, а max_age отключён по умолчанию.

Изменено в версии 2.0: etag заменяет параметр add_etags. Он может быть строкой для использования вместо генерации.

Изменено в версии 2.0: Передача файлоподобного объекта, наследующего от TextIOBase вызовет ValueError, а не отправку пустого файла.

Новое в версии 2.0: Реализация перенесена в Werkzeug. Теперь это обёртка для передачи некоторых специфичных для Flask аргументов.

Изменено в версии 1.1: filename может быть объектом PathLike.

Изменено в версии 1.1: Передача объекта BytesIO поддерживает запросы диапазонов.

Изменено в версии 1.0.3: Имена файлов кодируются с помощью ASCII вместо Latin-1 для более широкой совместимости с серверами WSGI.

Изменено в версии 1.0: Поддерживаются имена файлов UTF-8, как указано в RFC 2231.

Изменено в версии 0.12: Имя файла больше не определяется автоматически из файловых объектов. Если вы хотите использовать автоматическую поддержку MIME и etag, передайте имя файла через filename_or_fp или attachment_filename.

Изменено в версии 0.12: attachment_filename предпочтительнее filename для определения MIME.

Изменено в версии 0.9: cache_timeout по умолчанию Flask.get_send_file_max_age().

Изменено в версии 0.7: Угадывание MIME и поддержка etag для файлоподобных объектов были устаревши, так как были ненадежными. Передайте имя файла, если можете, в противном случае добавьте ETag самостоятельно.

Изменено в версии 0.5: Были добавлены параметры add_etags, cache_timeout и conditional. По умолчанию добавляются ETag.

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

flask.send_from_directory(directory, path, **kwargs)

Отправить файл из каталога с помощью send_file().

@app.route("/uploads/<path:name>")
def download_file(name):
    return send_from_directory(
        app.config['UPLOAD_FOLDER'], name, as_attachment=True
    )

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

Если конечный путь не указывает на существующий обычный файл, возникает ошибка 404 NotFound.

Параметры
  • directory (Union[os.PathLike, str]) – Каталог, в котором path должен находиться, относительно корневого пути текущего приложения.
  • path (Union[os.PathLike, str]) – Путь к файлу для отправки, относительно directory.
  • kwargs (Any) – Аргументы для передачи в send_file().
Тип возвращаемого значения

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 использует встроенный модуль Python json для обработки JSON по умолчанию. Реализация JSON может быть изменена, присвоив другой поставщик flask.Flask.json_provider_class или flask.Flask.json. Функции, предоставляемые flask.json, будут использовать методы app.json, если контекст приложения активен.

Фильтр Jinja |tojson настроен на использование поставщика JSON приложения. Фильтр помечает вывод |safe. Используйте его для рендеринга данных внутри HTML <script> тегов.

<script>
    const names = {{ names|tosjon }};
    renderChart(names, {{ axis_data|tojson }});
</script>
flask.json.jsonify(*args, **kwargs)

Сериализуйте заданные аргументы в формате JSON и верните объект Response с application/json mimetype. Словарь или список, возвращаемый из представления, будут автоматически преобразованы в ответ JSON без необходимости вызова этой функции.

Требуется активный контекст запроса или приложения и вызов app.json.response().

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

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

Параметры
  • args (t.Any) – Единственное значение для сериализации или несколько значений, которые будут обработаны как список для сериализации.
  • kwargs (t.Any) – Обработать как словарь для сериализации.
Тип возвращаемого значения

Ответ

Изменено в версии 2.2: Вызывает current_app.json.response, позволяя приложению переопределить поведение.

Изменения

Изменено в версии 2.0.2: Поддерживается decimal.Decimal путём преобразования в строку.

Изменено в версии 0.11: Добавлена поддержка сериализации массивов верхнего уровня. Это было проблемой безопасности в старых браузерах. См. Безопасность JSON.

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

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

Сериализует данные в формате JSON.

Если current_app доступен, он будет использовать свой метод app.json.dumps(), в противном случае будет использоваться json.dumps().

Параметры
  • obj (t.Any) – Данные для сериализации.
  • kwargs (t.Any) – Аргументы, передаваемые в реализацию dumps.
  • app (Flask | None) –
Тип возвращаемого значения

str

Изменено в версии 2.2: Вызывает current_app.json.dumps, позволяя приложению переопределить поведение.

Изменено в версии 2.2: Параметр app будет удален в Flask 2.3.

Изменения

Изменено в версии 2.0.2: Поддерживается decimal.Decimal путём преобразования в строку.

Изменено в версии 2.0: encoding будет удалено в Flask 2.1.

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

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

Сериализуйте данные в формате JSON и запишите в файл.

Если current_app доступен, он будет использовать свой метод app.json.dump(), в противном случае будет использоваться json.dump().

Параметры
  • obj (t.Any) – Данные для сериализации.
  • fp (t.IO[str]) – Файл, открытый для записи текста. Должен использовать кодировку UTF-8 для корректного JSON.
  • kwargs (t.Any) – Аргументы, передаваемые в реализацию dump.
  • app (Flask | None) –
Тип возвращаемого значения

None

Изменено в версии 2.2: Вызывает current_app.json.dump, позволяя приложению переопределить поведение.

Изменено в версии 2.2: Параметр app будет удален в Flask 2.3.

Изменения

Изменено в версии 2.0: Запись в двоичный файл и аргумент encoding будут удалены в Flask 2.1.

flask.json.loads(s, *, app=None, **kwargs)

Десериализует данные из JSON.

Если current_app доступен, он будет использовать свой метод app.json.loads(), в противном случае будет использоваться json.loads().

Параметры
  • s (str | bytes) – Текст или байты UTF-8.
  • kwargs (t.Any) – Аргументы, передаваемые в реализацию loads.
  • app (Flask | None) –
Тип возвращаемого значения

t.Any

Изменено в версии 2.2: Вызывает current_app.json.loads, позволяя приложению переопределить поведение.

Изменено в версии 2.2: Параметр app будет удален в Flask 2.3.

Изменения

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

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

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

Десериализация данных в формате JSON, считанных из файла.

Если доступен current_app, он будет использовать его метод app.json.load(), в противном случае будет использоваться json.load().

Параметры
  • fp (t.IO[t.AnyStr]) – Файл, открытый для чтения текста или байтов UTF-8.
  • kwargs (t.Any) – Аргументы, передаваемые в реализацию load.
  • app (Flask | None) –
Тип возвращаемого значения

t.Any

Изменено в версии 2.2: Вызов current_app.json.load, позволяющий приложению переопределить поведение.

Изменено в версии 2.2: Параметр app будет удален в Flask 2.3.

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

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

class flask.json.provider.JSONProvider(app)

Стандартный набор операций с JSON для приложения. Подклассы этого класса могут использоваться для настройки поведения JSON или использования разных библиотек JSON.

Чтобы реализовать провайдер для конкретной библиотеки, подклассифицируйте этот базовый класс и реализуйте как минимум dumps() и loads(). Все остальные методы имеют реализации по умолчанию.

Чтобы использовать другой провайдер, либо подклассифицируйте Flask и установите json_provider_class на класс провайдера, либо установите app.json на экземпляр класса.

Параметры

app (Flask) – Экземпляр приложения. Он будет сохранен в виде weakref.proxy атрибута _app.

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

None

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

dumps(obj, **kwargs)

Сериализация данных в формате JSON.

Параметры
  • obj (Any) – Данные для сериализации.
  • kwargs (Any) – Может быть передано в базовую библиотеку JSON.
Тип возвращаемого значения

str

dump(obj, fp, **kwargs)

Сериализация данных в формате JSON и запись в файл.

Параметры
  • obj (Any) – Данные для сериализации.
  • fp (IO[str]) – Файл, открытый для записи текста. Должен использовать кодировку UTF-8 для корректного JSON.
  • kwargs (Any) – Может быть передано в базовую библиотеку JSON.
Тип возвращаемого значения

None

loads(s, **kwargs)

Десериализация данных из JSON.

Параметры
  • s (str | bytes) – Текст или байты UTF-8.
  • kwargs (Any) – Может быть передано в базовую библиотеку JSON.
Тип возвращаемого значения

Any

load(fp, **kwargs)

Десериализация данных в формате JSON, считанных из файла.

Параметры
  • fp (IO) – Файл, открытый для чтения текста или байтов UTF-8.
  • kwargs (Any) – Может быть передано в базовую библиотеку JSON.
Тип возвращаемого значения

Any

response(*args, **kwargs)

Сериализует заданные аргументы в формате JSON и возвращает объект Response с типом контента application/json.

Функция jsonify() вызывает этот метод для текущего приложения.

Можно передать позиционные или именованные аргументы, но не оба сразу. Если аргументы не переданы, сериализуется None.

Параметры
  • args (t.Any) – Одно значение для сериализации или несколько значений для сериализации в виде списка.
  • kwargs (t.Any) – Словарь для сериализации.
Тип возвращаемого значения

Response

class flask.json.provider.DefaultJSONProvider(app)

Обеспечивает JSON-операции с использованием встроенной в Python библиотекой json. Сериализует следующие дополнительные типы данных:

  • datetime.datetime и datetime.date сериализуются в строки формата RFC 822. Это соответствует формату даты HTTP.
  • uuid.UUID сериализуется в строку.
  • dataclasses.dataclass передаётся в dataclasses.asdict().
  • Markup (или любой объект с методом __html__ ) вызовет метод __html__ для получения строки.
Parameters

app (Flask) –

Return type

None

static default(o)

Применяет эту функцию к любому объекту, для которого json.dumps() неизвестен способ сериализации. Она должна возвращать допустимый тип JSON или вызывать исключение TypeError.

Parameters

o (Any) –

Return type

Any

ensure_ascii = True

Заменяет символы, не входящие в ASCII, последовательностями экранирования. Это может быть совместимее с некоторыми клиентами, но может быть отключено для повышения производительности и размера.

sort_keys = True

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

compact: bool | None = None

Если True, или None вне режима отладки, вывод response() не будет добавлять отступы, новые строки или пробелы. Если False, или None в режиме отладки, он будет использовать некомпактное представление.

mimetype = 'application/json'

Тип MIME, установленный в response().

dumps(obj, **kwargs)

Сериализует данные в JSON в строку.

Аргументы ключевых слов передаются в json.dumps(). Устанавливает некоторые значения параметров по умолчанию из атрибутов default, ensure_ascii и sort_keys.

Parameters
  • obj (Any) – Данные для сериализации.
  • kwargs (Any) – Передаётся в json.dumps().
Return type

str

loads(s, **kwargs)

Десериализует данные в JSON из строки или байтов.

Parameters
  • s (str | bytes) – Текст или байты UTF-8.
  • kwargs (Any) – Передаётся в json.loads().
Return type

Any

response(*args, **kwargs)

Сериализует указанные аргументы в JSON и возвращает объект Response с ним. Тип MIME ответа будет «application/json», и его можно изменить с помощью mimetype.

Если compact равен False или режим отладки включен, вывод будет отформатирован для лучшей читаемости.

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

Parameters
  • args (t.Any) – Одно значение для сериализации или несколько значений, которые будут обработаны как список для сериализации.
  • kwargs (t.Any) – Будет обработано как словарь для сериализации.
Return type

Response

class flask.json.JSONEncoder(**kwargs)

По умолчанию используется кодировщик JSON. Обрабатывает дополнительные типы по сравнению со встроенным json.JSONEncoder.

  • datetime.datetime и datetime.date сериализуются в строки формата RFC 822. Это соответствует формату даты HTTP.
  • decimal.Decimal сериализуется в строку.
  • uuid.UUID сериализуется в строку.
  • dataclasses.dataclass передаётся в dataclasses.asdict().
  • Markup (или любой объект с методом __html__ ) вызовет метод __html__ для получения строки.

Для переопределения значения по умолчанию назначьте подкласс этого класса свойству flask.Flask.json_encoder или flask.Blueprint.json_encoder.

Устарело начиная с версии 2.2: Будет удалено в Flask 2.3. Используйте app.json вместо него.

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

None

default(o)

Преобразует o в сериализуемый в JSON тип. См. json.JSONEncoder.default(). Python не поддерживает переопределение способов сериализации основных типов, таких как str или list. Они обрабатываются до вызова этого метода.

Параметры

o (Any) –

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

Any

class flask.json.JSONDecoder(**kwargs)

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

Это не изменяет поведение от встроенного json.JSONDecoder.

Для переопределения значения по умолчанию назначьте подкласс этого класса свойству flask.Flask.json_decoder или flask.Blueprint.json_decoder.

Устарело начиная с версии 2.2: Будет удалено в Flask 2.3. Используйте app.json вместо него.

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

None

Размеченные 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.

Параметры

значение (Any) –

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

str

loads(value)

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

Параметры

значение (str) –

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

Any

register(tag_class, force=False, index=None)

Зарегистрировать новый тег в этом сериализаторе.

Параметры
  • класс_тега (Type[flask.json.tag.JSONTag]) – класс тега для регистрации. Будет инстанцирован с экземпляром этого сериализатора.
  • force (bool) – перезаписать существующий тег. Если false (по умолчанию), возникает KeyError.
  • индекс (Optional[int]) – индекс для вставки нового тега в порядке тегов. Полезно, когда новый тег является частным случаем существующего тега. Если None (по умолчанию), тег добавляется в конец порядка.
Исключения

KeyError – если ключ тега уже зарегистрирован и force не равно true.

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

None

tag(value)

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

Параметры

значение (Any) –

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

Dict[str, Any]

untag(value)

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

Параметры

значение (Dict[str, Any]) –

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

Any

class flask.json.tag.JSONTag(serializer)

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

Параметры

сериализатор (TaggedJSONSerializer) –

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

None

check(value)

Проверить, нужно ли помечать данное значение этим тегом.

Параметры

значение (Any) –

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

bool

key: Optional[str] = None

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

tag(value)

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

Параметры

значение (Any) –

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

Any

to_json(value)

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

Параметры

значение (Any) –

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

Any

to_python(value)

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

Параметры

значение (Any) –

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

Any

END_OF_DOCUMENT_MARKER

Посмотрим пример, который добавляет поддержку 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.stream_template(template_name_or_list, **context)

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

Параметры
  • template_name_or_list (Union[str, jinja2.environment.Template, List[Union[str, jinja2.environment.Template]]]) – Имя шаблона для отображения. Если задан список, будет отображено первое существующее имя.
  • context (Any) – Переменные, доступные в шаблоне.
Тип возвращаемого значения

Iterator[str]

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

flask.stream_template_string(source, **context)

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

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

Iterator[str]

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

flask.get_template_attribute(template_name, attribute)

Загружает макрос (или переменную), который шаблон экспортирует. Это можно использовать для вызова макроса из кода Python. Если у вас, например, есть шаблон с именем _cider.html со следующим содержимым:

{% macro hello(name) %}Hello {{ name }}!{% endmacro %}

Вы можете получить к нему доступ в коде Python так:

hello = get_template_attribute('_cider.html', 'hello')
return hello('World')
Журнал изменений

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

Параметры
  • 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(), игнорируя элементы с ключами, не имеющими заглавных букв.

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

Всегда возвращает True.

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

bool

Изменения

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

from_object(obj)

Обновляет значения из заданного объекта. Объект может быть одного из следующих двух типов:

  • строка: в этом случае будет импортирован объект с этим именем
  • ссылка на фактический объект: используется непосредственно этот объект

Объекты обычно являются либо модулями, либо классами. from_object() загружает только атрибуты модуля/класса с заглавными буквами. Объект dict не будет работать с from_object(), потому что ключи dict не являются атрибутами класса dict.

Пример конфигурации на основе модуля:

app.config.from_object('yourapplication.default_config')
from yourapplication import default_config
app.config.from_object(default_config)

К объекту ничего не применяется перед загрузкой. Если объект — это класс и у него есть атрибуты @property, его необходимо инициализировать перед передачей в этот метод.

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

См. Разработка/Производство для примера конфигурации на основе класса, использующего from_object().

Параметры

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)

Контекст запроса содержит информацию о каждом запросе. Приложение Flask создаёт и помещает его в начало запроса, а затем извлекает в конце. Он создаст адаптер URL и объект запроса для предоставленной среды WSGI.

Не пытайтесь использовать этот класс напрямую, вместо этого используйте test_request_context() и request_context() для создания этого объекта.

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

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

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

None

copy()

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

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

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

flask.globals.request_ctx

Текущий RequestContext. Если контекст запроса не активен, обращение к атрибутам этого прокси вызовет RuntimeError.

Это внутренний объект, который имеет важное значение для обработки Flask запросов. Доступ к нему не нужен в большинстве случаев. Скорее всего, вам нужны request и session.

class flask.ctx.AppContext(app)

Контекст приложения содержит информацию, специфичную для приложения. Контекст приложения создаётся и помещается в начало каждого запроса, если он не активен. Контекст приложения также помещается при выполнении команд CLI.

Параметры

app (Flask) –

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

None

pop(exc=<object object>)

Извлекает контекст приложения.

Параметры

exc (Optional[BaseException]) –

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

None

push()

Связывает контекст приложения с текущим контекстом.

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

None

flask.globals.app_ctx

Текущий AppContext. Если контекст приложения не активен, обращение к атрибутам этого прокси вызовет RuntimeError.

Это внутренний объект, который имеет важное значение для обработки Flask запросов. Доступ к нему не нужен в большинстве случаев. Скорее всего, вам нужны current_app и g вместо этого.

class flask.blueprints.BlueprintSetupState(blueprint, app, options, first_registration)

Временный объект для регистрации модуля с приложением. Экземпляр этого класса создаётся методом make_setup_state() и далее передаётся всем функциям обратного вызова регистрации.

Параметры
  • blueprint (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, определённому с помощью модуля.

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(), чтобы создать общее представление на основе класса. Вызовите as_view(), чтобы создать функцию представления, которая создаёт экземпляр класса с заданными аргументами и вызывает его метод dispatch_request с любыми переменными URL.

Подробное руководство см. в разделе Представления на основе классов.

class Hello(View):
    init_every_request = False

    def dispatch_request(self, name):
        return f"Hello, {name}!"

app.add_url_rule(
    "/hello/<name>", view_func=Hello.as_view("hello")
)

Установите methods в классе, чтобы изменить методы, которые принимает представление.

Установите decorators в классе, чтобы применить список декораторов к сгенерированной функции представления. Декораторы, применённые к самому классу, не будут применены к сгенерированной функции представления!

Установите init_every_request в False для повышения эффективности, если только вам не нужно хранить данные, глобальные для запроса, в self.

classmethod as_view(name, *class_args, **class_kwargs)

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

По умолчанию сгенерированное представление создаст новый экземпляр класса представления для каждого запроса и вызовет его метод dispatch_request(). Если класс представления устанавливает init_every_request в False, тот же экземпляр будет использоваться для каждого запроса.

Аргументы, переданные этому методу, передаются методу класса __init__.

Изменено в версии 2.2: Добавлен атрибут класса init_every_request.

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

Union[Callable[[…], Union[Response, str, bytes, Список[Любой], Словарь[str, Любой], Итератор[str], Итератор[bytes], Кортеж[Union[Response, str, bytes, Список[Любой], Словарь[str, Любой], Итератор[str], Итератор[bytes]], Union[Headers, Словарь[str, Union[str, Список[str], Кортеж[str, …]]], Последовательность[Кортеж[str, Union[str, Список[str], Кортеж[str, …]]]]]], Кортеж[Union[Response, str, bytes, Список[Любой], Словарь[str, Любой], Итератор[str], Итератор[bytes]], int], Кортеж[Union[Response, str, bytes, Список[Любой], Словарь[str, Любой], Итератор[str], Итератор[bytes]], int, Union[Headers, Словарь[str, Union[str, Список[str], Кортеж[str, …]]], Последовательность[Кортеж[str, Union[str,

List[str], Tuple[str, …]]]]]], WSGIApplication]], Callable[[…], Awaitable[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, …]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int, Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, …]]], Sequence[

Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], WSGIApplication]]]]

decorators: ClassVar[List[Callable]] = []

Список декораторов, которые необходимо применить к сгенерированной функции представления в определённом порядке. Помните, что синтаксис @decorator применяется снизу вверх, поэтому первый декоратор в списке будет самым нижним.

Changelog

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

dispatch_request()

Действительное поведение функции представления. Подклассы должны переопределить этот метод и вернуть допустимый ответ. Любые переменные из правила URL передаются в качестве именованных аргументов.

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

Union[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],

Tuple[str, …]]]]]], WSGIApplication]

init_every_request: ClassVar[bool] = True

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

Один экземпляр более эффективен, особенно если при инициализации выполняется сложная настройка. Однако хранение данных в self больше не безопасно для разных запросов, и вместо этого следует использовать g.

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

methods: ClassVar[Optional[Collection[str]]] = None

Методы, для которых зарегистрировано это представление. Использует те же значения по умолчанию (["GET", "HEAD", "OPTIONS"]) что и route и add_url_rule по умолчанию.

provide_automatic_options: ClassVar[Optional[bool]] = None

Управляет тем, обрабатывается ли метод OPTIONS автоматически. Использует те же значения по умолчанию (True) что и route и add_url_rule по умолчанию.

class flask.views.MethodView

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

Это может быть полезно для определения REST API.

methods автоматически устанавливается на основе методов, определённых в классе.

См. Классовые представления для подробного руководства.

class CounterAPI(MethodView):
    def get(self):
        return str(session.get("counter", 0))

    def post(self):
        session["counter"] = session.get("counter", 0) + 1
        return redirect(url_for("counter"))

app.add_url_rule(
    "/counter", view_func=CounterAPI.as_view("counter")
)
dispatch_request(**kwargs)

Фактическое поведение функции представления. Подклассы должны переопределить его и вернуть допустимый ответ. Все переменные из правила URL передаются в качестве именованных аргументов.

Параметры

kwargs (Any) –

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

Union[Response, str, bytes, Список[Любой], Отображение[str, Любой], Итератор[str], Итератор[bytes], Кортеж[Union[Response, str, bytes, Список[Любой], Отображение[str, Любой], Итератор[str], Итератор[bytes]], Union[Headers, Отображение[str, Union[str, Список[str], Кортеж[str, …]]], Последовательность[Кортеж[str, Union[str, Список[str], Кортеж[str, …]]]]]], Кортеж[Union[Response, str, bytes, Список[Любой], Отображение[str, Любой], Итератор[str], Итератор[bytes]], int], Кортеж[Union[Response, str, bytes, Список[Любой], Отображение[str, Любой], Итератор[str], Итератор[bytes]], int, Union[Headers, Отображение[str, Union[str, Список[str], Кортеж[str, …]]], Последовательность[Кортеж[str, Union[str, Список[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. Идея заключается в том, чтобы сохранить каждый URL уникальным, поэтому применяются следующие правила:

  1. Если правило заканчивается слешем, а пользователь запрашивает его без слеша, пользователь автоматически перенаправляется на ту же страницу со слешем в конце.
  2. Если правило не заканчивается слешем, а пользователь запрашивает страницу со слешем, генерируется ошибка 404 (страница не найдена).

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

Вы также можете определить несколько правил для одной функции. Однако они должны быть уникальными. Также можно указать значения по умолчанию. Например, вот определение URL, принимающего необязательный параметр страницы:

@app.route('/users/', defaults={'page': 1})
@app.route('/users/page/<int:page>')
def show_users(page):
    pass

Это указывает, что /users/ будет URL для первой страницы, а /users/page/N будет URL для страницы N.

Если URL содержит значение по умолчанию, он будет перенаправлен на более простую форму с перенаправлением 301. В приведенном выше примере /users/page/1 будет перенаправлен на /users/.

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

@app.route('/region/', defaults={'id': 1})
@app.route('/region/<int:id>', methods=['GET', 'POST'])
def region(id):
   pass

Вот параметры, которые принимают route() и add_url_rule(). Единственное различие заключается в том, что с параметром route функция представления определяется с помощью декоратора, а не с параметром view_func.

rule

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

endpoint

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

view_func

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

defaults

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

subdomain

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

**options

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

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

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

  • __name__: Имя функции по умолчанию используется в качестве конечной точки. Если endpoint указан явно, используется это значение. Кроме того, по умолчанию оно будет добавляться с именем модуля BluePrint. Это не настраивается непосредственно из функции.
  • methods: Если методы не указаны при добавлении правила URL, Flask будет искать в объекте функции представления атрибут methods. Если он существует, Flask будет использовать информацию о методах из него.
  • 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.

END_OF_DOCUMENT_MARKER

Интерфейс командной строки

class flask.cli.FlaskGroup(add_default_commands=True, create_app=None, add_version_option=True, load_dotenv=True, set_debug_flag=True, **extra)

Специальный подкласс группы AppGroup, который поддерживает загрузку дополнительных команд из конфигурированного приложения Flask. Разработчику обычно не нужно взаимодействовать с этим классом, но в некоторых продвинутых случаях создание экземпляра этого класса может быть целесообразным. Смотрите Пользовательские скрипты.

Параметры
  • add_default_commands (bool) – если значение True, то будут добавлены команды run и shell по умолчанию.
  • add_version_option (bool) – добавляет опцию --version.
  • create_app (t.Callable[..., Flask] | None) – необязательный обратный вызов, которому передаётся информация о скрипте, а возвращает загруженное приложение.
  • load_dotenv (bool) – Загрузить ближайшие файлы .env и .flaskenv для установки переменных окружения. Также изменит рабочую директорию на директорию, содержащую первый найденный файл.
  • set_debug_flag (bool) – Установить флаг отладки приложения.
  • extra (t.Any) –
Тип возвращаемого значения

None

Изменено в версии 2.2: Добавлены опции -A/--app, --debug/--no-debug, -e/--env-file.

Изменено в версии 2.2: При выполнении команд app.cli контекст приложения подталкивается, поэтому @with_appcontext больше не требуется для этих команд.

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

Изменено в версии 1.0: Если установлен, python-dotenv будет использован для загрузки переменных окружения из файлов .env и .flaskenv.

get_command(ctx, name)

Принимая контекст и имя команды, возвращает объект Command если он существует, в противном случае возвращает None.

list_commands(ctx)

Возвращает список имён подкоманд в порядке их появления.

make_context(info_name, args, parent=None, **extra)

Эта функция, когда получает имя info и аргументы, запускает разбор и создаёт новый Context. Однако она не вызывает фактический обратный вызов команды.

Для быстрой настройки используемого класса контекста без переопределения этого метода установите атрибут context_class.

Параметры
  • info_name (str | None) – имя info для этого вызова. Как правило, это самое описательное имя для скрипта или команды. Для скрипта верхнего уровня это обычно имя скрипта, для команд ниже – имя команды.
  • args (list[str]) – аргументы для разбора как список строк.
  • parent (Optional[click.core.Context]) – родительский контекст, если доступен.
  • extra (Any) – дополнительные ключевые аргументы, переданные конструктору контекста.
Тип возвращаемого значения

click.core.Context

Изменено в версии 8.0: Добавлен атрибут context_class.

parse_args(ctx, args)

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

Параметры
  • ctx (click.core.Context) –
  • args (list[str]) –
Тип возвращаемого значения

list[str]

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 (str | None) –
  • create_app (t.Callable[..., Flask] | None) –
  • set_debug_flag (bool) –
Тип возвращаемого значения

None

app_import_path

Путь импорта приложения Flask (необязательно).

create_app

Функция, которая принимает объект script info для создания экземпляра приложения (необязательно).

data: t.Dict[t.Any, t.Any]

Словарь с произвольными данными, которые можно связать с этим объектом script info.

load_app()

Загружает приложение Flask (если оно ещё не загружено) и возвращает его. Вызов этого метода несколько раз вернёт уже загруженное приложение.

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

Flask

flask.cli.load_dotenv(path=None)

Загружает файлы «dotenv» в порядке приоритета, чтобы установить переменные среды.

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

Это ничто, если python-dotenv не установлен.

Параметры

path (Optional[Union[str, os.PathLike]]) – Загрузить файл по этому пути вместо поиска.

Возвращает

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

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

bool

Изменения

Изменено в версии 2.0: Текущая директория не изменяется на расположение загруженного файла.

Изменено в версии 2.0: При загрузке файлов env используется кодировка по умолчанию UTF-8.

Изменено в версии 1.1.0: Возвращает False если python-dotenv не установлен или указанный путь не является файлом.

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

flask.cli.with_appcontext(f)

Оборачивает функцию-обработчик, гарантируя, что она будет выполнена в контексте приложения сценария.

Пользовательские команды (и их параметры), зарегистрированные в app.cli или blueprint.cli, всегда будут иметь доступ к контексту приложения. В этом случае декоратор не требуется.

Изменено в версии 2.2: Контекст приложения активен как для подкоманд, так и для обработчика-декоратора. Контекст приложения всегда доступен для команд app.cli и обработчиков параметров.

flask.cli.pass_script_info(f)

Помечает функцию так, чтобы экземпляр ScriptInfo был передан в качестве первого аргумента обработчику click.

Параметры

f (click.decorators.F) –

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

click.decorators.F

flask.cli.run_command = <Command run>

Запуск локального сервера разработки.

Этот сервер предназначен только для целей разработки. Он не обеспечивает стабильность, безопасность или производительность серверов WSGI для производства.

Релоадер и отладчик включены по умолчанию с опцией «–debug».

Параметры
  • 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.2.x/api/

Spec-Zone.ru

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