Spec-Zone.ru › Flask 2.3

API

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

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

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

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

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

Подробнее о загрузке ресурсов см. open_resource().

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

from flask import Flask
app = Flask(__name__)

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

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

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

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

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

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

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

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

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

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

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

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

Параметры:
  • import_name (str) – имя пакета приложения
  • static_url_path (str | None) – может использоваться для указания другого пути для статических файлов в веб-приложении. По умолчанию используется имя папки static_folder.
  • static_folder (str | os.PathLike | None) – папка со статическими файлами, которые обслуживаются по адресу static_url_path. Относительно корня приложения root_path или абсолютный путь. По умолчанию 'static'.
  • static_host (str | None) – хост, используемый при добавлении статического маршрута. По умолчанию None. Требуется при использовании host_matching=True с настроенным static_folder.
  • host_matching (bool) – установить url_map.host_matching атрибут. По умолчанию False.
  • subdomain_matching (bool) – учитывать поддомен относительно SERVER_NAME при сопоставлении маршрутов. По умолчанию False.
  • template_folder (str | os.PathLike | None) – папка, содержащая шаблоны, которые должны использоваться приложением. По умолчанию папка 'templates' в корне приложения.
  • instance_path (str | None) – альтернативный путь к экземпляру приложения. По умолчанию предполагается, что папка 'instance' рядом с пакетом или модулем является путём экземпляра.
  • instance_relative_config (bool) – если установлено в True имена файлов, относящиеся к конфигурации, предполагаются относительными к пути экземпляра, а не к корню приложения.
  • root_path (str | None) – путь к корню файлов приложения. Это следует устанавливать вручную только в тех случаях, когда его невозможно определить автоматически, например, для пакетов имён.
aborter

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

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

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

aborter_class

Псевдоним для Aborter

add_template_filter(f, name=None)

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

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

None

add_template_global(f, name=None)

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

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

В версии 0.10.

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

None

add_template_test(f, name=None)

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

Changelog

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

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

None

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

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

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

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

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

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

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

Параметр view_func необязательно передавать, но если правило должно участвовать в маршрутизации, имя конечной точки должно быть связано с функцией представления в какой-то момент с помощью декоратора endpoint().

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

@app.endpoint("index")
def index():
    ...

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

Параметры:
  • rule (str) – Строка правила URL.
  • endpoint (str | None) – Имя конечной точки, которое необходимо связать с правилом и функцией представления. Используется при маршрутизации и построении URL. По умолчанию view_func.__name__.
  • view_func (ft.RouteCallable | None) – Функция представления, которая должна быть связана с именем конечной точки.
  • provide_automatic_options (bool | None) – Добавить метод OPTIONS и автоматически отвечать на запросы OPTIONS.
  • options (t.Any) – Дополнительные параметры, передаваемые объекту Rule.
Тип возвращаемого значения:

None

after_request(f)

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

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

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

Доступно как для объектов приложения, так и для объектов модулей. При использовании на приложении, выполняется после каждого запроса. При использовании на модуле, выполняется после каждого запроса, который обрабатывает этот модуль. Для регистрации в модуле и выполнения после каждого запроса используйте Blueprint.after_app_request().

Параметры:

f (T_after_request) –

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

T_after_request

after_request_funcs: dict[ft.AppOrBlueprintKey, list[ft.AfterRequestCallable]]

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

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

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

app_context()

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

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

with app.app_context():
    init_db()

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

Changelog

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

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

AppContext

app_ctx_globals_class

Псевдоним для _AppCtxGlobals

async_to_sync(func)

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

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

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

Changelog

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

Параметры:

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

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

Callable[[…], Any]

auto_find_instance_path()

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

Changelog

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

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

str

before_request(f)

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

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

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

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

Доступно как для объектов приложения, так и для объектов модулей. При использовании на приложении, выполняется перед каждым запросом. При использовании на модуле, выполняется перед каждым запросом, который обрабатывает этот модуль. Для регистрации в модуле и выполнения перед каждым запросом используйте Blueprint.before_app_request().

Параметры:

f (T_before_request) –

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

T_before_request

before_request_funcs: dict[ft.AppOrBlueprintKey, list[ft.BeforeRequestCallable]]

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

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

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

blueprints: dict[str, Blueprint]

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

Изменения

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

cli

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

config

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

config_class

Псевдоним Config

context_processor(f)

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

Доступен как для приложения, так и для модулей. При использовании на приложении, он вызывается для каждого рендеренного шаблона. При использовании в модуле, он вызывается для шаблонов, рендеренных из представлений модуля. Чтобы зарегистрировать с модулем и повлиять на все шаблоны, используйте Blueprint.app_context_processor().

Параметры:

f (T_template_context_processor) –

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

T_template_context_processor

create_global_jinja_loader()

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

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

Изменения

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

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

DispatchingJinjaLoader

create_jinja_environment()

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

Изменения

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

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

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

Environment

create_url_adapter(request)

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

Изменения

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

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

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

Параметры:

request (Request | None) –

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

MapAdapter | None

property debug: bool

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

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

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

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

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

delete(rule, **options)

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

Изменения

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

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

Callable[[T_route], T_route]

dispatch_request()

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

Изменения

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

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

ft.ResponseReturnValue

do_teardown_appcontext(exc=<object object>)

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

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

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

Вызывается функцией AppContext.pop().

Изменения

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

Параметры:

exc (BaseException | None) –

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

None

do_teardown_request(exc=<object object>)

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

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

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

Параметры:

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

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

None

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

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

endpoint(endpoint)

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

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

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

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

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

Callable[[F], F]

ensure_sync(func)

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

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

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

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

Параметры:

func (Callable) –

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

Callable

error_handler_spec: dict[ft.AppOrBlueprintKey, dict[int | None, dict[type[Exception], ft.ErrorHandlerCallable]]]

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

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

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

errorhandler(code_or_exception)

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

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

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

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

@app.errorhandler(DatabaseError)
def special_exception_handler(error):
    return 'Database connection failed', 500

Доступно как для объектов приложения, так и для объектов плана. При использовании с приложением обрабатывает ошибки всех запросов. При использовании с планом обрабатывает ошибки запросов, которые обрабатывает план. Для регистрации с планом и воздействия на все запросы используйте Blueprint.app_errorhandler().

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

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

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

Параметры:

code_or_exception (type[Exception] | int) – код в виде целого числа для обработчика или произвольное исключение

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

Callable[[T_error_handler], T_error_handler]

extensions: dict

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

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

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

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

full_dispatch_request()

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

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

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

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

Response

get(rule, **options)

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

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

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

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

Callable[[T_route], T_route]

get_send_file_max_age(filename)

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

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

Changelog

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

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

Параметры:

filename (str | None) –

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

int | None

property got_first_request: bool

Этот атрибут устанавливается в True , если приложение начало обработку первого запроса.

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

Changelog

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

handle_exception(e)

Обрабатывает исключение, для которого не был задан обработчик ошибок или которое возникло в обработчике ошибок. Это всегда приводит к возврату 500 InternalServerError.

Всегда отправляет сигнал got_request_exception.

Если PROPAGATE_EXCEPTIONS равно True, например, в режиме отладки, ошибка будет повторно поднята, чтобы отладчик мог её отобразить. В противном случае исходное исключение регистрируется, и возвращается InternalServerError.

Если обработчик ошибок зарегистрирован для InternalServerError или 500, он будет использован. Для согласованности, обработчик всегда получает InternalServerError. Исходное необработанное исключение доступно как e.original_exception.

Changelog

Изменено в версии 1.1.0: Всегда передает экземпляр InternalServerError обработчику, устанавливая original_exception в значение необработанной ошибки.

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

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

Параметры:

e (Исключение) –

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

Response

handle_http_exception(e)

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

Changelog

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

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

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

Параметры:

e (HTTPException) –

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

HTTPException | ft.ResponseReturnValue

handle_url_build_error(error, endpoint, values)

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

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

Параметры:
  • error (BuildError) – Активное BuildError, обрабатываемое в данный момент.
  • endpoint (str) – Точка входа, для которой происходит построение URL.
  • values (dict[str, Any]) – Ключевые аргументы, переданные в url_for.
Тип возвращаемого значения:

str

handle_user_exception(e)

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

Changelog

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

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

Параметры:

e (Исключение) –

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

HTTPException | ft.ResponseReturnValue

property has_static_folder: bool

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

Changelog

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

import_name

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

inject_url_defaults(endpoint, values)

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

Changelog

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

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

None

instance_path

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

Changelog

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

iter_blueprints()

Итерирует по всем зарегистрированным блейпринтам в порядке их регистрации.

Changelog

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

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

t.ValuesView[Блейпринт]

property jinja_env: Environment

Среда Jinja, используемая для загрузки шаблонов.

Среда создаётся в первый раз при обращении к этому свойству. Изменение jinja_options после этого не повлияет.

jinja_environment

Псевдоним для Environment

property jinja_loader: FileSystemLoader | None

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

Changelog

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

jinja_options: dict = {}

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

Changelog

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

json: JSONProvider

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

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

По умолчанию, DefaultJSONProvider, использует встроенную в Python библиотеку json. Различные поставщики могут использовать разные библиотеки JSON.

Changelog

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

json_provider_class

Псевдоним для DefaultJSONProvider

log_exception(exc_info)

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

Changelog

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

Параметры:

exc_info (кортеж[тип, BaseException, обработка_ошибок] | кортеж[None, None, None]) –

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

None

property logger: Logger

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

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

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

Changelog

Изменено в версии 1.1.0: Логгер имеет то же имя, что и name, а не жёстко заданное "flask.app".

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

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

make_aborter()

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

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

Changelog

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

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

Aborter

make_config(instance_relative=False)

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

Changelog

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

Параметры:

instance_relative (bool) –

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

Config

make_default_options_response()

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

Changelog

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

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

Response

make_response(rv)

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

Параметры:

rv (ft.ResponseReturnValue) –

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

str

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

bytes

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

dict

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

list

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

generator or iterator

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

tuple

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

response_class

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

other Response class

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

callable()

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

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

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

preprocess_request()

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

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

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

ft.ResponseReturnValue | None

process_response(response)

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

Изменения

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

Параметры:

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

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

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

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

Response

put(rule, **options)

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

Изменения

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

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

Callable[[T_route], T_route]

redirect(location, code=302)

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

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

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

Response

Изменения

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

register_blueprint(blueprint, **options)

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

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

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

None

Изменения

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

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

register_error_handler(code_or_exception, f)

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

Изменения

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

Параметры:
  • code_or_exception (type[Exception] | int) –
  • f (ft.ErrorHandlerCallable) –
Тип возвращаемого значения:

None

request_class

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

request_context(environ)

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

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

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

Параметры:

environ (dict) – WSGI-среда

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

RequestContext

response_class

псевдоним для 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[[T_route], 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 (str | None) – имя хоста для прослушивания. Установите это значение в '0.0.0.0' для того чтобы сервер также был доступен извне. По умолчанию '127.0.0.1' или хост из переменной конфигурации SERVER_NAME , если она присутствует.
  • port (int | None) – порт веб-сервера. По умолчанию 5000 или порт, определённый в переменной конфигурации SERVER_NAME , если она присутствует.
  • debug (bool | None) – если задано, включить или отключить отладочный режим. См. debug.
  • load_dotenv (bool) – Загрузить ближайшие файлы .env и .flaskenv для установки переменных окружения. Также изменит рабочую директорию на директорию, содержащую первый найденный файл.
  • options (Any) – параметры, передаваемые в подлежащий сервер Werkzeug. См. werkzeug.serving.run_simple() для получения дополнительной информации.
Тип возвращаемого значения:

None

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

Изменено в версии 1.0: Если установлено, python-dotenv будет использоваться для загрузки переменных окружения из файлов .env и .flaskenv.

Переменная окружения FLASK_DEBUG переопределит debug.

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

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

secret_key

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

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

select_jinja_autoescape(filename)

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

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

Изменено в версии 2.2: Автоэкранировка теперь включена по умолчанию для файлов .svg.

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

Параметры:

filename (str) –

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

bool

send_static_file(filename)

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

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

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

Параметры:

filename (str) –

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

Response

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

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

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

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

shell_context_processor(f)

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

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

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

Параметры:

f (T_shell_context_processor) –

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

T_shell_context_processor

shell_context_processors: list[ft.ShellContextProcessorCallable]

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

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

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

END_OF_DOCUMENT_MARKER
should_ignore_error(error)

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

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

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

Параметры:

error (BaseException | None) –

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

bool

property static_folder: str | None

Абсолютный путь к настроенной папке со статическими файлами. None если папка со статическими файлами не задана.

property static_url_path: str | None

Префикс URL, с которого будет доступен статический маршрут.

Если он не был настроен во время инициализации, он выводится из static_folder.

teardown_appcontext(f)

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

with app.app_context():
    ...

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

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

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

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

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

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

Параметры:

f (T_teardown) –

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

T_teardown

teardown_appcontext_funcs: list[ft.TeardownCallable]

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

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

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

teardown_request(f)

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

with app.test_request_context():
    ...

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

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

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

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

Это доступно как для объектов приложения, так и для объектов blueprints. При использовании с приложением, это выполняется после каждого запроса. При использовании с blueprint, это выполняется после каждого запроса, который обрабатывает blueprint. Для регистрации с blueprint и выполнения после каждого запроса используйте Blueprint.teardown_app_request().

Параметры:

f (T_teardown) –

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

T_teardown

teardown_request_funcs: dict[ft.AppOrBlueprintKey, list[ft.TeardownCallable]]

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

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

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

template_context_processors: dict[ft.AppOrBlueprintKey, list[ft.TemplateContextProcessorCallable]]

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

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

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

template_filter(name=None)

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

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

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

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

Callable[[T_template_filter], T_template_filter]

template_folder

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

template_global(name=None)

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

@app.template_global()
def double(n):
    return 2 * n
Журнал изменений

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

Параметры:

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

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

Callable[[T_template_global], 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 (str | None) – необязательное имя проверки, в противном случае используется имя функции.

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

Callable[[T_template_test], T_template_test]

test_cli_runner(**kwargs)

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

Возвращает экземпляр test_cli_runner_class, по умолчанию FlaskCliRunner. Объект приложения Flask передаётся в качестве первого аргумента.

Изменения

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

Параметры:

kwargs (t.Any) –

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

FlaskCliRunner

test_cli_runner_class: type[FlaskCliRunner] | None = None

Подкласс CliRunner, по умолчанию FlaskCliRunner, который используется test_cli_runner(). Его метод __init__ должен принимать объект приложения Flask в качестве первого аргумента.

Изменения

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

test_client(use_cookies=True, **kwargs)

Создаёт тестовый клиент для этого приложения. Сведения о тестировании модулей см. в Тестирование приложений Flask.

Обратите внимание, что если вы тестируете утверждения или исключения в вашем коде приложения, вам необходимо установить app.testing = True , чтобы исключения распространялись на тестовый клиент. В противном случае исключение будет обработано приложением (невидимо для тестового клиента), и единственным показателем AssertionError или другого исключения будет ответ с кодом состояния 500 тестовому клиенту. См. атрибут testing. Например:

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

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

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

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

from flask.testing import FlaskClient

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

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

Дополнительную информацию см. в FlaskClient.

Изменения

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

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

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

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

FlaskClient

test_client_class: type[FlaskClient] | None = None

Метод test_client() создаёт экземпляр этого класса тестового клиента. По умолчанию FlaskClient.

Изменения

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

test_request_context(*args, **kwargs)

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

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

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

with app.test_request_context(...):
    generate_report()

При использовании оболочки может быть проще вручную помещать и извлекать контекст, чтобы избежать отступов.

ctx = app.test_request_context(...)
ctx.push()
...
ctx.pop()

Принимает те же аргументы, что и 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.
Тип возвращаемого значения:

RequestContext

testing

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

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

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

END_OF_DOCUMENT_MARKER
trap_http_exception(e)

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

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

Changelog

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

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

Параметры:

e (Исключение) –

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

bool

update_template_context(context)

Обновляет контекст шаблона некоторыми часто используемыми переменными. Это вставляет request, session, config и g в контекст шаблона, а также всё, что процессоры контекста шаблона хотят вставить. Обратите внимание, что значения в исходном контексте не будут перезаписаны, если процессор контекста решит вернуть значение с тем же ключом, начиная с Flask 0.6.

Параметры:

context (словарь) – контекст в виде словаря, который обновляется на месте для добавления дополнительных переменных.

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

None

url_build_error_handlers: list[t.Callable[[Exception, str, dict[str, t.Any]], str]]

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

Changelog

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

url_default_functions: dict[ft.AppOrBlueprintKey, list[ft.URLDefaultCallable]]

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

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

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

url_defaults(f)

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

Доступно как для объектов app, так и для blueprint. При использовании с app, она вызывается для каждого запроса. При использовании с blueprint, она вызывается для запросов, которые обрабатывает blueprint. Чтобы зарегистрировать с blueprint и повлиять на каждый запрос, используйте Blueprint.app_url_defaults().

Параметры:

f (T_url_defaults) –

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

T_url_defaults

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

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

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

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

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

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

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

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

str

Changelog

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

url_map

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

from werkzeug.routing import BaseConverter

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

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

Псевдоним Map

url_rule_class

Псевдоним Rule

url_value_preprocessor(f)

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

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

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

Эта функция доступна как для объектов приложения, так и для объектов шаблонов. При использовании с приложением она вызывается для каждого запроса. При использовании с шаблоном она вызывается для запросов, обрабатываемых этим шаблоном. Чтобы зарегистрировать функцию с шаблоном и повлиять на каждый запрос, используйте Blueprint.app_url_value_preprocessor().

Параметры:

f (T_url_value_preprocessor) –

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

T_url_value_preprocessor

url_value_preprocessors: dict[ft.AppOrBlueprintKey, list[ft.URLValuePreprocessorCallable]]

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

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

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

view_functions: dict[str, t.Callable]

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

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

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

wsgi_app(environ, start_response)

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

app = MyMiddleware(app)

Лучше сделать так:

app.wsgi_app = MyMiddleware(app.wsgi_app)

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

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

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

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

Any

Объекты Blueprint

class flask.Blueprint(name, import_name, static_folder=None, static_url_path=None, template_folder=None, url_prefix=None, subdomain=None, url_defaults=None, root_path=None, cli_group=<object object>)

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

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

Декорирование функции с помощью blueprint создаёт отложенную функцию, которая вызывается с BlueprintSetupState при регистрации blueprint в приложении.

См. Модульные приложения с помощью Blueprint для получения дополнительной информации.

Параметры:
  • name (str) – Имя blueprint. Будет добавлено в префикс каждого имени конечной точки.
  • import_name (str) – Имя пакета blueprint, обычно __name__. Это помогает найти root_path для blueprint.
  • static_folder (str | os.PathLike | None) – Папка со статическими файлами, которые должны обслуживаться статическим маршрутом blueprint. Путь является относительным к корневому пути blueprint. Статические файлы blueprint по умолчанию отключены.
  • static_url_path (str | None) – URL для предоставления статических файлов. По умолчанию static_folder. Если у blueprint нет url_prefix, статический маршрут приложения будет иметь приоритет, и статические файлы blueprint будут недоступны.
  • template_folder (str | os.PathLike | None) – Папка с шаблонами, которые должны быть добавлены в путь поиска шаблонов приложения. Путь является относительным к корневому пути blueprint. Шаблоны blueprint по умолчанию отключены. Шаблоны blueprint имеют более низкий приоритет, чем шаблоны в папке шаблонов приложения.
  • url_prefix (str | None) – Путь, который добавляется в префикс всех URL blueprint, чтобы сделать их отличными от других маршрутов приложения.
  • subdomain (str | None) – Поддомен, с которым маршруты blueprint будут сопоставляться по умолчанию.
  • url_defaults (dict | None) – Словарь значений по умолчанию, которые маршруты blueprint будут получать по умолчанию.
  • root_path (str | None) – По умолчанию blueprint автоматически устанавливает это значение на основе import_name. В некоторых ситуациях автоматическое определение может не сработать, поэтому путь можно указать вручную.
  • cli_group (str | None) –
Изменения

Изменено в версии 1.1.0: У blueprint есть группа cli для регистрации вложенных команд CLI. Параметр cli_group управляет именем группы внутри команды flask.

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

add_app_template_filter(f, name=None)

Регистрирует фильтр шаблонов, доступный в любом шаблоне, отображаемом приложением. Работает так же, как декоратор app_template_filter(). Эквивалентно Flask.add_template_filter().

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

None

add_app_template_global(f, name=None)

Регистрирует глобальную переменную шаблона, доступную в любом шаблоне, отображаемом приложением. Работает так же, как декоратор app_template_global(). Эквивалентно Flask.add_template_global().

Изменения

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

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

None

add_app_template_test(f, name=None)

Регистрирует тест шаблона, доступный в любом шаблоне, отображаемом приложением. Работает так же, как декоратор app_template_test(). Эквивалентно Flask.add_template_test().

Изменения

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

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

None

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

Регистрирует правило URL с помощью blueprint. См. Flask.add_url_rule() для получения полной документации.

Правило URL имеет префикс, заданный префиксом URL blueprint. Имя конечной точки, используемое с url_for(), имеет префикс, заданный именем blueprint.

Параметры:
  • rule (str) –
  • endpoint (str | None) –
  • view_func (ft.RouteCallable | None) –
  • provide_automatic_options (bool | None) –
  • options (t.Any) –
Тип возвращаемого значения:

None

END_OF_DOCUMENT_MARKER
after_app_request(f)

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

Параметры:

f (T_after_request) –

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

T_after_request

after_request(f)

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

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

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

Доступно как для объектов приложения, так и для объектов модулей. При использовании с приложением выполняется после каждого запроса. При использовании с модулем выполняется после каждого запроса, который обрабатывает модуль. Чтобы зарегистрировать функцию с модулем и выполнить её после каждого запроса, используйте Blueprint.after_app_request().

Параметры:

f (T_after_request) –

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

T_after_request

after_request_funcs: dict[ft.AppOrBlueprintKey, list[ft.AfterRequestCallable]]

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

Чтобы зарегистрировать функцию, используйте декоратор after_request().

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

app_context_processor(f)

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

Параметры:

f (T_template_context_processor) –

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

T_template_context_processor

app_errorhandler(code)

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

Параметры:

code (type[Exception] | int) –

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

Callable[[T_error_handler], T_error_handler]

app_template_filter(name=None)

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

Параметры:

name (str | None) – необязательное имя фильтра; в противном случае используется имя функции.

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

Callable[[T_template_filter], T_template_filter]

app_template_global(name=None)

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

Changelog

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

Параметры:

name (str | None) – необязательное имя глобальной переменной; в противном случае используется имя функции.

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

Callable[[T_template_global], T_template_global]

app_template_test(name=None)

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

Changelog

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

Параметры:

name (str | None) – необязательное имя теста; в противном случае используется имя функции.

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

Callable[[T_template_test], T_template_test]

app_url_defaults(f)

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

Параметры:

f (T_url_defaults) –

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

T_url_defaults

app_url_value_preprocessor(f)

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

Параметры:

f (T_url_value_preprocessor) –

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

T_url_value_preprocessor

before_app_request(f)

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

Параметры:

f (T_before_request) –

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

T_before_request

before_request(f)

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

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

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

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

Это доступно как для объектов приложения, так и для объектов шаблонов. При использовании на объекте приложения, эта функция выполняется перед каждым запросом. При использовании на объекте шаблона, эта функция выполняется перед каждым запросом, который обрабатывает шаблон. Для регистрации с шаблоном и выполнения перед каждым запросом, используйте Blueprint.before_app_request().

Параметры:

f (T_before_request) –

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

T_before_request

before_request_funcs: dict[ft.AppOrBlueprintKey, list[ft.BeforeRequestCallable]]

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

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

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

cli

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

context_processor(f)

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

Это доступно как для объектов приложения, так и для объектов шаблонов. При использовании на объекте приложения, это вызывается для каждого рендерящегося шаблона. При использовании на объекте шаблона, это вызывается для шаблонов, рендерящихся из представлений шаблона. Для регистрации с шаблоном и воздействия на каждый шаблон, используйте Blueprint.app_context_processor().

Параметры:

f (T_template_context_processor) –

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

T_template_context_processor

delete(rule, **options)

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

Изменения

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

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

Callable[[T_route], T_route]

endpoint(endpoint)

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

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

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

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

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

Callable[[F], F]

error_handler_spec: dict[ft.AppOrBlueprintKey, dict[int | None, dict[type[Exception], ft.ErrorHandlerCallable]]]

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

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

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

errorhandler(code_or_exception)

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

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

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

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

@app.errorhandler(DatabaseError)
def special_exception_handler(error):
    return 'Database connection failed', 500

Это доступно как для объектов приложения, так и для объектов шаблонов. При использовании на объекте приложения, это может обрабатывать ошибки каждого запроса. При использовании на объекте шаблона, это может обрабатывать ошибки запросов, которые обрабатывает шаблон. Для регистрации с шаблоном и воздействия на каждый запрос, используйте Blueprint.app_errorhandler().

Изменения

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

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

Параметры:

code_or_exception (type[Exception] | int) – код как целое число для обработчика или произвольное исключение

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

Callable[[T_error_handler], T_error_handler]

get(rule, **options)

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

Изменения

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

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

Callable[[T_route], 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 (str | None) –

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

int | None

property has_static_folder: bool

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

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

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

import_name

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

property jinja_loader: FileSystemLoader | None

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

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

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

make_setup_state(app, options, first_registration=False)

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

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

BlueprintSetupState

open_resource(resource, mode='rb')

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

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

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

post(rule, **options)

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

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

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

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

Callable[[T_route], T_route]

put(rule, **options)

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

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

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

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

Callable[[T_route], T_route]

record(func)

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

Параметры:

func (Callable) –

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

None

record_once(func)

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

Параметры:

func (Callable) –

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

None

END_OF_DOCUMENT_MARKER
register(app, options)

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

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

None

Изменено в версии 2.3: Вложенные модули теперь корректно применяют поддомены.

Изменения

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

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

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

register_blueprint(blueprint, **options)

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

Изменения

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

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

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

None

register_error_handler(code_or_exception, f)

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

Изменения

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

Параметры:
  • code_or_exception (type[Исключение] | int) –
  • f (ft.ErrorHandlerCallable) –
Тип возвращаемого значения:

None

root_path

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

route(rule, **options)

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

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

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

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

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

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

Callable[[T_route], T_route]

send_static_file(filename)

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

Изменения

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

Параметры:

filename (str) –

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

Response

property static_folder: str | None

Абсолютный путь к настроенной папке со статическими файлами. None если папка со статическими файлами не установлена.

property static_url_path: str | None

Префикс URL, с которого доступен статический маршрут.

Если он не был настроен во время инициализации, он выводится из static_folder.

teardown_app_request(f)

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

Параметры:

f (T_teardown) –

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

T_teardown

teardown_request(f)

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

with app.test_request_context():
    ...

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

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

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

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

Это доступно как для объектов приложения, так и для объектов схемы. При использовании с приложением, эта функция выполняется после каждого запроса. При использовании со схемой, эта функция выполняется после каждого запроса, обрабатываемого этой схемой. Для регистрации со схемой и выполнения после каждого запроса, используйте Blueprint.teardown_app_request().

Параметры:

f (T_teardown) –

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

T_teardown

teardown_request_funcs: dict[ft.AppOrBlueprintKey, list[ft.TeardownCallable]]

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

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

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

template_context_processors: dict[ft.AppOrBlueprintKey, list[ft.TemplateContextProcessorCallable]]

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

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

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

template_folder

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

url_default_functions: dict[ft.AppOrBlueprintKey, list[ft.URLDefaultCallable]]

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

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

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

url_defaults(f)

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

Это доступно как для объектов приложения, так и для объектов схемы. При использовании с приложением, эта функция вызывается для каждого запроса. При использовании со схемой, эта функция вызывается для запросов, обрабатываемых схемой. Для регистрации со схемой и воздействия на каждый запрос, используйте Blueprint.app_url_defaults().

Параметры:

f (T_url_defaults) –

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

T_url_defaults

url_value_preprocessor(f)

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

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

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

Это доступно как для объектов приложения, так и для объектов схемы. При использовании с приложением, эта функция вызывается для каждого запроса. При использовании со схемой, эта функция вызывается для запросов, обрабатываемых схемой. Для регистрации со схемой и воздействия на каждый запрос, используйте Blueprint.app_url_value_preprocessor().

Параметры:

f (T_url_value_preprocessor) –

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

T_url_value_preprocessor

url_value_preprocessors: dict[ft.AppOrBlueprintKey, list[ft.URLValuePreprocessorCallable]]

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

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

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

view_functions: dict[str, t.Callable]

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

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

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

Данные входящего запроса

class flask.Request(environ, populate_request=True, shallow=False)

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

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

Объект запроса является подклассом Request и предоставляет все атрибуты, определённые Werkzeug, плюс несколько специфичных для Flask.

Параметры:
  • environ (WSGIEnvironment) –
  • populate_request (bool) –
  • shallow (bool) –
property accept_charsets: CharsetAccept

Список кодировок символов, поддерживаемых клиентом в виде объекта CharsetAccept.

property accept_encodings: Accept

Список кодировок, которые принимает клиент. Кодировки в HTTP терминологии — это кодировки сжатия, такие как gzip. Для кодировок символов посмотрите accept_charset.

property accept_languages: LanguageAccept

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

property accept_mimetypes: MIMEAccept

Список MIME-типов, которые поддерживает клиент в виде объекта MIMEAccept.

access_control_request_headers

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

access_control_request_method

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

property access_route: list[str]

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

classmethod application(f)

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

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

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

Параметры:

f (t.Callable[[Запрос], WSGIApplication]) – вызываемый WSGI для декорации

Возвращает:

новый вызываемый WSGI

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

WSGIApplication

property args: MultiDict[str, str]

Обработанные параметры URL (часть URL после знака вопроса).

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

Изменено в версии 2.3: Недопустимые байты остаются в процентах закодированными.

property authorization: Authorization | None

Заголовок Authorization , обработанный в объект Authorization. None если заголовок отсутствует.

Изменено в версии 2.3: Authorization больше не является dict. Атрибут token добавлен для схем аутентификации, которые используют токен вместо параметров.

property base_url: str

Аналогично url, но без строки запроса.

property blueprint: str | None

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

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

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

property blueprints: list[str]

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

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

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

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

property cache_control: RequestCacheControl

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

property charset: str

Кодировка символов, используемая для декодирования данных тела, формы и cookie. По умолчанию UTF-8.

Устарело начиная с версии 2.3: Будет удалено в Werkzeug 3.0. Данные запроса всегда должны быть UTF-8.

close()

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

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

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

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

None

content_encoding

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

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

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

property content_length: int | None

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

content_md5

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

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

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

content_type

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

property cookies: ImmutableMultiDict[str, str]

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

END_OF_DOCUMENT_MARKER
property data: bytes

Необработанные данные, прочитанные из stream. Будет пустым, если запрос представляет данные формы.

Чтобы получить необработанные данные, даже если они представляют данные формы, используйте get_data().

date

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

Изменения

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

dict_storage_class

Псевдоним ImmutableMultiDict

property encoding_errors: str

Обработка ошибок при декодировании байтов. По умолчанию «replace».

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

property endpoint: str | None

Точка входа, соответствующая URL запроса.

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

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

environ: WSGIEnvironment

WSGI-среда, содержащая HTTP-заголовки и информацию от WSGI-сервера.

property files: ImmutableMultiDict[str, FileStorage]

MultiDict объект, содержащий все загруженные файлы. Каждый ключ в files — имя из <input type="file" name="">. Каждое значение в files — объект Werkzeug FileStorage.

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

Обратите внимание, что files будет содержать данные только если метод запроса был POST, PUT или PATCH и <form> отправленного в запрос имели enctype="multipart/form-data". В противном случае он будет пустым.

См. документацию MultiDict / FileStorage для получения более подробной информации о используемой структуре данных.

property form: ImmutableMultiDict[str, str]

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

Пожалуйста, имейте в виду, что загрузки файлов не попадут сюда, а вместо этого в атрибут files.

Изменения

Изменено в версии 0.9: До Werkzeug 0.9 это содержало только данные формы для запросов POST и PUT.

form_data_parser_class

Псевдоним FormDataParser

classmethod from_values(*args, **kwargs)

Создает новый объект запроса на основе предоставленных значений. Если environ задан, пропущенные значения заполняются из него. Этот метод полезен для небольших скриптов, когда вам нужно смоделировать запрос из URL. Не используйте этот метод для тестирования модулей, есть полноценный объект клиента (Client), который позволяет создавать запросы multipart, поддерживать куки и т.д.

Принимает те же опции, что и EnvironBuilder.

Изменения

Изменено в версии 0.5: Этот метод теперь принимает те же аргументы, что и EnvironBuilder. Из-за этого параметр environ теперь называется environ_overrides.

Возвращает:

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

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

Request

property full_path: str

Запрошенный путь, включая строку запроса.

get_data(cache=True, as_text=False, parse_form_data=False)

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

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

Обратите внимание, что если данные формы уже обработаны, этот метод ничего не вернёт, так как обработка данных формы не кэширует данные так, как это делает этот метод. Чтобы неявно вызвать функцию обработки данных формы, установите parse_form_data в True. В этом случае возвращаемое значение этого метода будет пустой строкой, если обработчик формы обрабатывает данные. Обычно это не нужно, если все данные кэшируются (что является стандартным поведением), парсер формы будет использовать кэшированные данные для обработки данных формы. Пожалуйста, всегда проверяйте длину содержимого перед вызовом этого метода, чтобы избежать перегрузки памяти сервера.

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

Изменения

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

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

bytes | str

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

Разбор data как JSON.

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

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

Any | None

Изменено в версии 2.3: Вызывать ошибку 415 вместо 400.

Изменения

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

headers

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

property host: str

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

property host_url: str

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

property if_match: ETags

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

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

ETags

property if_modified_since: datetime | None

Разбор заголовка If-Modified-Since как объекта datetime.

Изменения

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

property if_none_match: ETags

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

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

ETags

property if_range: IfRange

Разбор заголовка If-Range.

Изменения

Изменено в версии 2.0: IfRange.date с часовым поясом.

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

property if_unmodified_since: datetime | None

Разбор заголовка If-Unmodified-Since как объекта datetime.

Изменения

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

input_stream

Необработанный поток ввода WSGI без проверок безопасности.

Использование опасно. Оно не защищает от бесконечных потоков или чтения после content_length или max_content_length.

Используйте stream вместо этого.

property is_json: bool

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

is_multiprocess

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

is_multithread

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

is_run_once

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

property is_secure: bool

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

property json: Any | None

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

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

Если тип содержимого запроса не application/json, это вызовет ошибку 415 Неподдерживаемый тип медиа.

Изменено в версии 2.3: Вызывать ошибку 415 вместо 400.

Изменения

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

list_storage_class

Псевдоним для ImmutableList

make_form_data_parser()

Создаёт парсер данных формы. Инициализирует form_data_parser_class с некоторыми параметрами.

Изменения

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

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

FormDataParser

property max_content_length: int | None

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

max_form_memory_size: int | None = None

Максимальный размер поля формы. Передаётся функции разбора данных формы (parse_form_data()). При установлении и обращении к атрибуту form или files, если размер данных в памяти для данных POST превышает указанное значение, поднимается исключение RequestEntityTooLarge.

Изменения

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

max_form_parts = 1000

Максимальное количество частей multipart для разбора, передаваемое в form_data_parser_class. Разбор данных формы с большим количеством частей приведёт к исключению RequestEntityTooLarge.

Изменения

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

max_forwards

Поле заголовка запроса Max-Forwards предоставляет механизм для методов TRACE и OPTIONS, чтобы ограничить количество прокси-серверов или шлюзов, которые могут пересылать запрос следующему входящему серверу.

method

Метод, с помощью которого был отправлен запрос, например GET.

property mimetype: str

Аналогично content_type, но без параметров (например, без кодировки, типа и т. д.) и всегда в нижнем регистре. Например, если тип содержимого text/HTML; charset=utf-8 , то mimetype будет 'text/html'.

property mimetype_params: dict[str, str]

Параметры mimetype в виде словаря. Например, если тип содержимого text/html; charset=utf-8 , то параметры будут {'charset': 'utf-8'}.

on_json_loading_failed(e)

Вызывается, если get_json() завершается с ошибкой и не отменяется.

Если этот метод возвращает значение, оно используется в качестве возвращаемого значения для get_json(). По умолчанию реализация вызывает BadRequest.

Parameters:

e (ValueError | None) – Если произошла ошибка при разборе, это исключение. Оно будет None , если тип содержимого не был application/json.

Return type:

Any

Изменено в версии 2.3: Вызывать ошибку 415 вместо 400.

origin

Хост, с которого исходит запрос. Установите access_control_allow_origin в ответе, чтобы указать разрешенные источники.

parameter_storage_class

Псевдоним ImmutableMultiDict

path

Часть пути URL после root_path. Это путь, используемый для маршрутизации внутри приложения.

property pragma: HeaderSet

Поле заголовка общего назначения Pragma используется для включения реализуемых директив, которые могут применяться к любому получателю в цепочке запрос/ответ. Все директивы pragma указывают на необязательное поведение с точки зрения протокола; однако некоторые системы могут потребовать, чтобы поведение соответствовало этим директивам.

query_string

Часть URL после «?». Это значение в сыром виде, используйте args для обработанных значений.

property range: Range | None

Обработанный заголовок Range.

Changelog

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

Return type:

Range

referrer

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

remote_addr

Адрес клиента, отправляющего запрос.

remote_user

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

root_path

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

property root_url: str

Схема, хост и корневой путь URL запроса. Это корень, с которого доступно приложение.

routing_exception: Exception | None = None

Если совпадение с URL не удалось, это исключение, которое будет возбуждено/было возбуждено в рамках обработки запроса. Обычно это исключение NotFound или подобное.

scheme

Схема URL протокола, используемого запросом, например https или wss.

property script_root: str

Псевдоним для self.root_path. environ["SCRIPT_ROOT"] без заключительного слэша.

server

Адрес сервера. (host, port), (path, None) для сокетов Unix или None , если неизвестно.

shallow: bool

Устанавливается при создании объекта запроса. Если True, чтение из тела запроса вызовет RuntimeException. Полезно для предотвращения изменения потока из промежуточного ПО.

property stream: IO[bytes]

Поток ввода WSGI с проверками безопасности. Этот поток может быть использован только один раз.

Используйте get_data() для получения полного данных в виде байтов или текста. Атрибут data будет содержать полные байты только в том случае, если они не представляют данные формы. Атрибут form в этом случае будет содержать обработанные данные формы.

В отличие от input_stream, этот поток защищает от бесконечных потоков или чтения после content_length или max_content_length.

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

Если предел достигнут до того, как исходный поток будет исчерпан (например, файл слишком большой или бесконечный поток), остальное содержимое потока не может быть безопасно считано. В зависимости от того, как сервер обрабатывает это, клиенты могут показать ошибку «сброс соединения» вместо отображения ответа 413.

Изменено в версии 2.3: Проверять max_content_length предварительно и во время чтения.

Changelog

Изменено в версии 0.9: Поток всегда задан (но может быть использован), даже если сначала был обращен к обработке формы.

trusted_hosts: list[str] | None = None

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

Поскольку заголовки Host и X-Forwarded-Host могут быть установлены клиентом-злоумышленником на любое значение, рекомендуется либо установить этот атрибут, либо реализовать аналогичную проверку на прокси-сервере (если приложение работает за ним).

Changelog

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

property url: str

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

END_OF_DOCUMENT_MARKER
property url_charset: str

Кодировка, используемая для декодирования процентов кодированных байтов в args. По умолчанию используется значение charset, которое по умолчанию равно UTF-8.

Устаревшее с версии 2.3: Будет удалено в Werkzeug 3.0. Проценты кодированные байты всегда должны быть UTF-8.

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

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

property url_root: str

Псевдоним для root_url. URL со схемой, хостом и корневым путем. Например, https://example.com/app/.

url_rule: Rule | None = None

Внутреннее правило URL, которое сопоставилось с запросом. Это может быть полезно для проверки разрешенных методов для URL из обработчика before/after (request.url_rule.methods) и т. д. Однако, если метод запроса был недействительным для правила URL, список допустимых методов доступен в routing_exception.valid_methods вместо этого (атрибут исключения Werkzeug MethodNotAllowed), так как запрос никогда не был внутренне связан.

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

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

property user_agent: UserAgent

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

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

Изменено в версии 2.1: Встроенный анализатор был удален. Установите user_agent_class в подкласс UserAgent для анализа данных из строки.

user_agent_class

Псевдоним UserAgent

property values: CombinedMultiDict[str, str]

werkzeug.datastructures.CombinedMultiDict, объединяющая args и form.

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

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

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

view_args: dict[str, t.Any] | None = None

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

property want_form_data_parsed: bool

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

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

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

flask.request

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

Это прокси. Подробнее см. Примечания о прокси.

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

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

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

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

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

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

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

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

Параметры:
  • response (Iterable[str] | Iterable[bytes]) –
  • status (int | str | HTTPStatus | None) –
  • headers (Headers) –
  • mimetype (str | None) –
  • content_type (str | None) –
  • direct_passthrough (bool) –
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: HeaderSet

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

autocorrect_location_header = False

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

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

Изменено в версии 2.1: По умолчанию отключено, поэтому ответы будут отправлять относительные перенаправления.

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

automatically_set_content_length = True

Должен ли этот объект ответа автоматически задавать заголовок content-length, если это возможно? По умолчанию это true.

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

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

property cache_control: ResponseCacheControl

Поле общего заголовка Cache-Control используется для указания директив, которые ДОЛЖНЫ выполняться всеми механизмами кэширования по цепочке запроса/ответа.

calculate_content_length()

Возвращает длину содержимого, если она доступна, или None в противном случае.

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

int | None

call_on_close(func)

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

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

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

Параметры:

func (Callable[[], Any]) –

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

Callable[[], Any]

property charset: str

Кодировка символов, используемая для кодирования данных тела и cookie. По умолчанию UTF-8.

Устарело начиная с версии 2.3: Будет удалено в Werkzeug 3.0. Данные ответа всегда должны быть UTF-8.

close()

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

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

Новое в версии 0.9: Теперь можно использовать в операторе with.

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

None

content_encoding

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

END_OF_DOCUMENT_MARKER
property content_language: HeaderSet

Поле заголовка сущности Content-Language описывает естественный язык(и) целевой аудитории для вложенной сущности. Обратите внимание, что это может не соответствовать всем языкам, используемым в теле сущности.

content_length

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

content_location

Поле заголовка сущности Content-Location МОЖЕТ использоваться для предоставления местоположения ресурса для сущности, вложенной в сообщение, когда эта сущность доступна из местоположения, отличного от URI запрашиваемого ресурса.

content_md5

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

property content_range: ContentRange

Заголовок Content-Range в виде объекта ContentRange. Доступен даже если заголовок не установлен.

Changelog

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

property content_security_policy: ContentSecurityPolicy

Заголовок Content-Security-Policy в виде объекта ContentSecurityPolicy. Доступен даже если заголовок не установлен.

Заголовок Content-Security-Policy добавляет дополнительный уровень безопасности для выявления и смягчения определённых типов атак.

property content_security_policy_report_only: ContentSecurityPolicy

Заголовок Content-Security-policy-report-only в виде объекта ContentSecurityPolicy. Доступен даже если заголовок не установлен.

Заголовок Content-Security-Policy-Report-Only добавляет политику CSP, которая не применяется, но отслеживается, помогая обнаруживать определённые типы атак.

content_type

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

cross_origin_embedder_policy

Препятствует загрузке документа любыми ресурсами с другого домена, которые не предоставляют документу разрешение. Значения должны быть членом перечисления werkzeug.http.COEP.

cross_origin_opener_policy

Позволяет управлять совместным использованием группы контекста просмотра с документами с другого домена. Значения должны быть членом перечисления werkzeug.http.COOP.

property data: bytes | str

Дескриптор, который вызывает get_data() и set_data().

date

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

Changelog

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

default_mimetype: str | None = 'text/html'

Значение по умолчанию для mimetype, если оно не предоставлено.

default_status = 200

Значение по умолчанию для статуса, если оно не предоставлено.

delete_cookie(key, path='/', domain=None, secure=False, httponly=False, samesite=None)

Удаляет cookie. Возвращает без ошибок, если ключ не существует.

Параметры:
  • key (str) – ключ (имя) cookie для удаления.
  • path (str | None) – если cookie ограничена путём, путь должен быть определён здесь.
  • domain (str | None) – если cookie ограничена доменом, этот домен должен быть определён здесь.
  • secure (bool) – Если True, cookie будет доступна только через HTTPS.
  • httponly (bool) – Запретить доступ к cookie через JavaScript.
  • samesite (str | None) – Ограничить область действия cookie только запросами «с того же сайта».
Тип возвращаемого значения:

None

direct_passthrough

Передать тело ответа напрямую как WSGI-итератор. Это может быть полезно, когда тело является двоичным файлом или другим итератором байтов, чтобы пропустить некоторые ненужные проверки. Используйте send_file() вместо ручного задания этого параметра.

expires

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

Changelog

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

classmethod force_type(response, environ=None)

Принудительно сделать WSGI-ответ объектом ответа текущего типа. Werkzeug использует Response во многих ситуациях, таких как исключения. Если вызвать get_response() на исключении, вы получите обычный объект Response, даже если используется пользовательский подкласс.

Этот метод может принудительно задать тип ответа, а также преобразует произвольные WSGI-вызовы в объекты ответа, если предоставлен environ:

# convert a Werkzeug response object into an instance of the
# MyResponseClass subclass.
response = MyResponseClass.force_type(response)

# convert any WSGI application into a response object
response = MyResponseClass.force_type(response, environ)

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

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

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

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

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

Response

freeze()

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

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

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

Изменено в версии 2.0: Заголовок ETag всегда добавляется.

Изменено в версии 0.6: Заголовок Content-Length установлен.

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

None

classmethod from_app(app, environ, buffered=False)

Создать новый объект ответа из вывода приложения. Это работает лучше всего, если вы передаёте приложение, которое постоянно возвращает генератор. Иногда приложения могут использовать вызываемый write() возвращаемый функцией start_response. Это пытается автоматически разрешить такие граничные случаи. Но если вы не получаете ожидаемый вывод, вы должны установить buffered в True, что обеспечивает буферизацию.

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

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

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

Response

get_app_iter(environ)

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

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

Изменения

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

Параметры:

environ (WSGIEnvironment) – окружение WSGI запроса.

Возвращает:

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

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

t.Iterable[bytes]

get_data(as_text=False)

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

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

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

Изменения

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

Параметры:

as_text (bool) –

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

bytes | str

get_etag()

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

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

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

Any | None

get_wsgi_headers(environ)

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

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

Изменения

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

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

Параметры:

environ (WSGIEnvironment) – окружение WSGI запроса.

Возвращает:

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

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

Headers

get_wsgi_response(environ)

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

Изменения

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

Параметры:

environ (WSGIEnvironment) – окружение WSGI запроса.

Возвращает:

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

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

tuple[t.Iterable[bytes], str, list[tuple[str, str]]]

implicit_sequence_conversion = True

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

Изменения

Введено в версии 0.6.2: Этот атрибут ранее назывался implicit_seqence_conversion. (Обратите внимание на опечатку). Если вы использовали эту функцию, вам нужно адаптировать свой код к изменению имени.

property is_json: bool

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

property is_sequence: bool

Если итератор буферизован, это свойство будет True. Объект ответа будет считать итератор буферизованным, если атрибут response является списком или кортежем.

Changelog

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

property is_streamed: bool

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

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

iter_encoded()

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

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

Iterator[bytes]

property json: Any | None

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

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

last_modified

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

Changelog

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

location

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

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

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

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

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

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

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

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

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

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

Ответ

Changelog

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

make_sequence()

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

Changelog

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

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

None

property max_cookie_size: int

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

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

property mimetype: str | None

Тип MIME (тип содержимого без кодировки и т. д.).

property mimetype_params: dict[str, str]

Параметры типа MIME в виде словаря. Например, если тип содержимого равен text/html; charset=utf-8, параметры будут {'charset': 'utf-8'}.

Changelog

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

response: t.Iterable[str] | t.Iterable[bytes]

Тело ответа для отправки в качестве WSGI-итератора. Список строк или байтов представляет собой ответ фиксированной длины, любая другая итерируемая последовательность — ответ потокового типа. Строки кодируются в байты как UTF-8.

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

property retry_after: datetime | None

Поле заголовка ответа Retry-After может использоваться с ответом 503 (Сервис недоступен) для указания того, как долго сервис должен быть недоступен для клиента, который запросил.

Время в секундах до истечения срока действия или дата.

Changelog

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

set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=False, httponly=False, samesite=None)

Устанавливает куку.

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

Параметры:
  • ключ (str) – ключ (имя) устанавливаемой куки.
  • значение (str) – значение куки.
  • max_age (timedelta | int | None) – должно быть числом секунд, или None (по умолчанию), если кука должна храниться только до закрытия браузера клиентом.
  • expires (str | datetime | int | float | None) – должно быть объектом datetime или меткой времени UNIX.
  • path (str | None) – ограничивает куку заданным путем, по умолчанию она распространяется на весь домен.
  • domain (str | None) – если необходимо установить куку между доменами. Например, domain=".example.com" установит куку, доступную для домена www.example.com, foo.example.com и т.д. В противном случае кука будет доступна только для домена, который её установил.
  • secure (bool) – Если True, кука будет доступна только через HTTPS.
  • httponly (bool) – Запретить доступ к куке через JavaScript.
  • samesite (str | None) – Ограничить область действия куки только запросами с «одного сайта».
Тип возвращаемого значения:

None

set_data(value)

Устанавливает новую строку как ответ. Значение должно быть строкой или байтами. Если установлена строка, она кодируется в кодировке ответа (по умолчанию utf-8).

Изменения

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

Параметры:

значение (bytes | str) –

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

None

set_etag(etag, weak=False)

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

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

None

property status: str

Код HTTP-статуса в виде строки.

property status_code: int

Код HTTP-статуса в виде числа.

property stream: ResponseStream

Итерируемый объект ответа в виде потока только для записи.

property vary: HeaderSet

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

property www_authenticate: WWWAuthenticate

Заголовок WWW-Authenticate разборён в объект WWWAuthenticate. Изменение объекта изменит значение заголовка.

Этот заголовок не установлен по умолчанию. Чтобы установить этот заголовок, присвойте экземпляр WWWAuthenticate этому атрибуту.

response.www_authenticate = WWWAuthenticate(
    "basic", {"realm": "Authentication Required"}
)

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

Чтобы сбросить этот заголовок, присвойте None или используйте del.

Изменено в версии 2.3: Этот атрибут можно назначить, чтобы установить заголовок. Можно назначить список для установки нескольких значений заголовков. Используйте del для сброса заголовка.

Изменено в версии 2.3: WWWAuthenticate больше не является dict. Атрибут token был добавлен для вызовов аутентификации, использующих токен вместо параметров.

Сессии

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

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

class flask.session

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

Это прокси. Подробнее см. Заметки о прокси.

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

new

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

modified

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

# this change is not picked up because a mutable object (here
# a list) is changed.
session['objects'].append(42)
# so mark it as modified yourself
session.modified = True
permanent

Если установлено True, сессия будет жить в течение permanent_session_lifetime секунд. По умолчанию 31 день. Если установлено False (что является значением по умолчанию), сессия будет удалена при закрытии браузера пользователем.

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

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

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

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

class flask.sessions.SessionInterface

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

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

class Session(dict, SessionMixin):
    pass

Если open_session() возвращает None Flask вызовет make_null_session() для создания сеанса, который будет использоваться в качестве замены, если поддержка сеансов не может работать из-за того, что какое-то требование не выполняется. По умолчанию созданный класс NullSession будет жаловаться на то, что закрытый ключ не установлен.

Чтобы заменить интерфейс сеанса в приложении, нужно назначить flask.Flask.session_interface:

app = Flask(__name__)
app.session_interface = MySessionInterface()

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

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

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

get_cookie_domain(app)

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

Используется конфигурация SESSION_COOKIE_DOMAIN.

Изменено в версии 2.3: По умолчанию не задано, не возвращает SERVER_NAME по умолчанию.

Параметры:

app (Flask) –

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

str | None

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

Параметры:

app (Flask) –

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

bool

get_expiration_time(app, session)

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

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

datetime | None

is_null_session(obj)

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

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

Параметры:

obj (object) –

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

bool

make_null_session(app)

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

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

Параметры:

app (Flask) –

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

NullSession

null_session_class

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

Псевдоним для NullSession

open_session(app, request)

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

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

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

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

SessionMixin | None

pickle_based = False

Флаг, указывающий, основана ли сессионная система на сериализации с помощью pickle. Это можно использовать расширениям Flask, чтобы принять решение о том, как обрабатывать объект сессии.

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

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

save_session(app, session, response)

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

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

None

should_set_cookie(app, session)

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

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

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

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

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

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

SecureCookieSession | None

salt = 'cookie-session'

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

save_session(app, session, response)

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

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

None

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

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

session_class

Псевдоним для SecureCookieSession

class flask.sessions.SecureCookieSession(initial=None)

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

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

Параметры:

initial (t.Any) –

accessed = False

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

get(key, default=None)

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

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

Any

modified = False

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

setdefault(key, default=None)

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

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

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

Any

class flask.sessions.NullSession(initial=None)

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

Параметры:

initial (t.Any) –

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

NoReturn

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

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

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

NoReturn

popitem(*args, **kwargs)

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

Пары возвращаются в порядке LIFO (last-in, first-out). Вызывает KeyError, если словарь пуст.

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

NoReturn

setdefault(*args, **kwargs)

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

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

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

NoReturn

update([E, ]**F) → None. Update D from dict/iterable E and F.

Если E присутствует и имеет метод .keys(), то делает: for k in E: D[k] = E[k] Если E присутствует и не имеет метода .keys(), то делает: for k, v in E: D[k] = v В любом случае, за этим следует: for k in F: D[k] = F[k]

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

NoReturn

class flask.sessions.SessionMixin

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

accessed = True

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

modified = True

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

property permanent: bool

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

Замечание

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

Клиент тестирования

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

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

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

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

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

Параметры:
  • args (t.Any) –
  • kwargs (t.Any) –
open(*args, buffered=False, follow_redirects=False, **kwargs)

Создаёт словарь environ из заданных аргументов, выполняет запрос к приложению с его использованием и возвращает ответ.

Параметры:
  • args (t.Any) – Передаётся в EnvironBuilder для создания environ для запроса. Если передан один аргумент, это может быть существующий EnvironBuilder или словарь environ.
  • buffered (bool) – Преобразовать итератор, возвращаемый приложением, в список. Если итератор имеет метод close(), он вызывается автоматически.
  • follow_redirects (bool) – Выполнять дополнительные запросы для следования HTTP-редиректам до тех пор, пока не будет возвращён статус, не являющийся редиректом. TestResponse.history перечисляет промежуточные ответы.
  • kwargs (t.Any) –
Тип возвращаемого значения:

TestResponse

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

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

Изменено в версии 2.0: Поток ввода запроса закрывается при вызове response.close(). Потоки ввода для редиректов автоматически закрываются.

Изменено в версии 0.5: Если в словаре для параметра data задан словарь в качестве файла, тип контента должен называться content_type вместо mimetype. Это изменение сделано для согласованности с werkzeug.FileWrapper.

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

session_transaction(*args, **kwargs)

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

with client.session_transaction() as session:
    session['value'] = 42

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

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

Generator[SessionMixin, None, None]

Запуск командной строки для тестирования

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

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

Параметры:
  • app (Flask) –
  • kwargs (t.Any) –
invoke(cli=None, args=None, **kwargs)

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

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

Параметры:
  • cli (Any | None) – Объект команды для вызова. По умолчанию группа cli приложения.
  • args (Any | None) – Список строк для вызова команды.
  • 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 (Any | None) – Значение по умолчанию, если атрибута нет.
Тип возвращаемого значения:

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 (Any | None) – Значение по умолчанию для установки и возврата, если атрибута нет.
Тип возвращаемого значения:

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)

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

Пример:

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 (str | None) – Если указано, добавляется как #anchor к URL.
  • _method (str | None) – Если указано, генерируется URL, связанный с этим методом для конечной точки.
  • _scheme (str | None) – Если указано, URL будет иметь этот протокол, если он внешний.
  • _external (bool | None) – Если указано, предпочтение отдаётся внутреннему URL (False) или требуется внешний URL (True). Внешние URL включают протокол и домен. При отсутствии активного запроса URL по умолчанию являются внешними.
  • values (Any) – Значения для использования в переменных частях правила URL. Неизвестные ключи добавляются в качестве аргументов строки запроса, как ?a=b&c=d.
Тип возвращаемого значения:

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 (int | BaseResponse) – Код состояния исключения, который должен быть зарегистрирован в app.aborter.
  • args (t.Any) – Передаётся в исключение.
  • kwargs (t.Any) – Передаётся в исключение.
Тип возвращаемого значения:

t.NoReturn

Изменения

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

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

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

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

Параметры:
  • location (str) – URL для перенаправления.
  • code (int) – Код состояния для перенаправления.
  • Response (type[BaseResponse] | None) – Класс ответа для использования. Не используется, когда 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() как кортеж.
Changelog

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

Parameters:

args (t.Any) –

Return type:

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!'

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

Changelog

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

Parameters:

f (Callable[[ResponseClass], ResponseClass] | Callable[[ResponseClass], Awaitable[ResponseClass]]) –

Return type:

Callable[[ResponseClass], ResponseClass] | Callable[[ResponseClass], Awaitable[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 (os.PathLike | str | t.BinaryIO) – Путь к файлу для отправки, относительно текущей рабочей директории, если указан относительный путь. В качестве альтернативы, объект, подобный файлу, открытый в двоичном режиме. Убедитесь, что указатель файла установлен в начало данных.
  • mimetype (str | None) – Тип MIME для отправки файла. Если не указан, будет пытаться определить его по имени файла.
  • as_attachment (bool) – Указывает браузеру, что ему следует предложить сохранить файл вместо отображения.
  • download_name (str | None) – Имя по умолчанию, которое браузеры будут использовать при сохранении файла. По умолчанию совпадает с именем файла.
  • conditional (bool) – Включает условные и диапазонные ответы на основе заголовков запроса. Требует передачи пути к файлу и environ.
  • etag (bool | str) – Вычислять ETag для файла, что требует передачи пути к файлу. Также может быть строкой для использования вместо него.
  • last_modified (datetime | int | float | None) – Время последнего изменения файла, в секундах. Если не указано, будет пытаться определить его по пути к файлу.
  • max_age (None | (int | t.Callable[[str | None], int | None])) – Время, в секундах, в течение которого клиент должен кэшировать файл. Если установлено, Cache-Control будет public, в противном случае будет no-cache для предпочтительного условного кэширования.
Тип возвращаемого значения:

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 (os.PathLike | str) – Каталог, в котором path должен быть расположен, относительно корневого пути текущего приложения.
  • path (os.PathLike | str) – Путь к файлу для отправки, относительно directory.
  • kwargs (t.Any) – Аргументы для передачи в send_file().
Тип возвращаемого значения:

Response

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

Изменено в версии 2.0: path заменяет параметр filename.

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

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

Сообщения-всплывающие подсказки

flask.flash(message, category='message')

Выводит сообщение-всплывающую подсказку на следующий запрос. Для удаления сообщения-всплывающей подсказки из сессии и для отображения его пользователю, шаблон должен вызвать get_flashed_messages().

Журнал изменений

Изменено в версии 0.3: category параметр добавлен.

Параметры:
  • message (str) – сообщение для вывода в виде всплывающей подсказки.
  • category (str) – категория для сообщения. Рекомендуются следующие значения: 'message' для любого типа сообщений, 'error' для ошибок, 'info' для информационных сообщений и 'warning' для предупреждений. Однако может быть использована любая строка в качестве категории.
Тип возвращаемого значения:

None

flask.get_flashed_messages(with_categories=False, category_filter=())

Извлекает все сообщения-всплывающие подсказки из сессии и возвращает их. Дальнейшие вызовы функции в одном запросе вернут те же сообщения. По умолчанию возвращаются только сообщения, но когда with_categories установлено в True, возвращаемое значение будет списком кортежей вида (category, message) вместо этого.

Фильтруйте сообщения-всплывающие подсказки по одной или нескольким категориям, указав эти категории в category_filter. Это позволяет отображать категории в отдельных блоках html. Аргументы with_categories и category_filter различны:

  • with_categories управляет тем, возвращаются ли категории вместе с текстом сообщения (True возвращает кортеж, где False возвращает только текст сообщения).
  • category_filter фильтрует сообщения, возвращая только те, которые соответствуют заданным категориям.

См. Сообщения-всплывающие подсказки для примеров.

Журнал изменений

Изменено в версии 0.9: category_filter параметр добавлен.

Изменено в версии 0.3: with_categories параметр добавлен.

Параметры:
  • with_categories (bool) – установить в True для получения также категорий.
  • category_filter (Iterable[str]) – фильтр категорий для ограничения возвращаемых значений. Будут возвращены только категории из списка.
Тип возвращаемого значения:

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|tojson }};
    renderChart(names, {{ axis_data|tojson }});
</script>
flask.json.jsonify(*args, **kwargs)

Сериализует заданные аргументы в формате JSON и возвращает объект Response с MIME-типом application/json. Словарь или список, возвращаемые из представления, будут автоматически преобразованы в ответ JSON без необходимости вызова этой функции.

Требуется активный контекст запроса или приложения, и вызывается app.json.response().

В режиме отладки вывод отформатирован с отступами для лучшей читаемости. Это также может контролироваться поставщиком.

Можно использовать позиционные или именованные аргументы, но не оба одновременно. Если аргументы не указаны, сериализуется None.

Параметры:
  • args (t.Any) – Единственное значение для сериализации или несколько значений, которые будут обработаны как список для сериализации.
  • kwargs (t.Any) – Обработать как словарь для сериализации.
Тип возвращаемого значения:

Ответ

Журнал изменений

Изменено в версии 2.2: Вызывает current_app.json.response, позволяя приложению переопределить поведение.

Изменено в версии 2.0.2: Поддерживается decimal.Decimal путем преобразования в строку.

Изменено в версии 0.11: Добавлена поддержка сериализации массивов верхнего уровня. Это представляло собой риск безопасности в старых браузерах. См. Безопасность JSON.

Введено в версии 0.2.

flask.json.dumps(obj, **kwargs)

Сериализует данные в формате JSON.

Если доступен current_app, он будет использовать метод app.json.dumps(), в противном случае он будет использовать json.dumps().

Параметры:
  • obj (Any) – Данные для сериализации.
  • kwargs (Any) – Аргументы, передаваемые в реализацию dumps.
Тип возвращаемого значения:

строка

Изменено в версии 2.3: Параметр app был удален.

Журнал изменений

Изменено в версии 2.2: Вызывает current_app.json.dumps, позволяя приложению переопределить поведение.

Изменено в версии 2.0.2: Поддерживается decimal.Decimal путем преобразования в строку.

Изменено в версии 2.0: encoding будет удалено в Flask 2.1.

Изменено в версии 1.0.3: app может быть передан непосредственно, а не потребован контекст приложения для конфигурации.

flask.json.dump(obj, fp, **kwargs)

Сериализует данные в формате JSON и записывает в файл.

Если доступен current_app, он будет использовать метод app.json.dump(), в противном случае он будет использовать json.dump().

Параметры:
  • obj (Any) – Данные для сериализации.
  • fp (IO[строка]) – Файл, открытый для записи текстовых данных. Должен использовать кодировку UTF-8 для корректного JSON.
  • kwargs (Any) – Аргументы, передаваемые в реализацию dump.
Тип возвращаемого значения:

None

Изменено в версии 2.3: Параметр app был удален.

Журнал изменений

Изменено в версии 2.2: Вызывает current_app.json.dump, позволяя приложению переопределить поведение.

Изменено в версии 2.0: Запись в бинарный файл и аргумент encoding будут удалены в Flask 2.1.

flask.json.loads(s, **kwargs)

Десериализует данные в формате JSON.

Если доступен current_app, он будет использовать метод app.json.loads(), в противном случае он будет использовать json.loads().

Параметры:
  • s (строка | байты) – Текст или UTF-8 байты.
  • kwargs (Any) – Аргументы, передаваемые в реализацию loads.
Тип возвращаемого значения:

Any

Изменено в версии 2.3: Параметр app был удален.

Журнал изменений

Изменено в версии 2.2: Вызывает current_app.json.loads, позволяя приложению переопределить поведение.

Изменено в версии 2.0: encoding будет удалено в Flask 2.1. Данные должны быть строкой или UTF-8 байтами.

Изменено в версии 1.0.3: app может быть передан непосредственно, а не потребован контекст приложения для конфигурации.

END_OF_DOCUMENT_MARKER
flask.json.load(fp, **kwargs)

Десериализация данных в формате JSON, прочитанных из файла.

Если доступен current_app, он будет использовать метод app.json.load(), в противном случае будет использоваться json.load().

Параметры:
  • fp (IO) – Файл, открытый для чтения текста или байтов UTF-8.
  • kwargs (Any) – Аргументы, передаваемые в реализацию load.
Тип возвращаемого значения:

Any

Изменено в версии 2.3: Параметр app был удален.

Журнал изменений

Изменено в версии 2.2: Вызовы current_app.json.load, позволяющие приложению переопределить поведение.

Изменено в версии 2.2: Параметр app будет удален в Flask 2.3.

Изменено в версии 2.0: encoding будет удалено в Flask 2.1. Файл должен быть в текстовом режиме или в двоичном режиме с байтами UTF-8.

class flask.json.provider.JSONProvider(app)

Стандартный набор операций с JSON для приложения. Подклассы этого могут использоваться для настройки поведения JSON или использования разных библиотек JSON.

Чтобы реализовать провайдер для определенной библиотеки, подклассифицируйте этот базовый класс и реализуйте, как минимум, dumps() и loads(). Все остальные методы имеют реализации по умолчанию.

Чтобы использовать другой провайдер, подклассифицируйте Flask и установите json_provider_class на класс провайдера или установите app.json на экземпляр класса.

Параметры:

app (Flask) – Экземпляр приложения. Он будет сохранен как weakref.proxy на атрибуте _app.

Журнал изменений

Новое в версии 2.2.

dumps(obj, **kwargs)

Сериализация данных в формате JSON.

Параметры:
  • 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 с MIME-типом 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__ для получения строки.
Параметры:

app (Flask) –

static default(o)

Применяется к любому объекту, для которого json.dumps() не знает, как выполнить сериализацию. Он должен вернуть допустимый тип JSON или вызвать TypeError.

Параметры:

o (Any) –

Тип возвращаемого значения:

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.

Параметры:
  • obj (Any) – Сериализуемые данные.
  • kwargs (Any) – Передаётся в json.dumps().
Тип возвращаемого значения:

str

loads(s, **kwargs)

Десериализует данные из JSON из строки или байтов.

Параметры:
  • s (str | bytes) – Текст или байты UTF-8.
  • kwargs (Any) – Передаётся в json.loads().
Тип возвращаемого значения:

Any

response(*args, **kwargs)

Сериализует переданные аргументы в JSON и возвращает объект Response с ним. Тип MIME ответа будет «application/json» и может быть изменён с помощью mimetype.

Если compact равен False, или режим отладки включён, выход будет отформатирован для лучшей читаемости.

Можно использовать позиционные или ключевые аргументы, но не оба одновременно. Если аргументов нет, то None будет сериализован.

Параметры:
  • args (t.Any) – Одно значение для сериализации или несколько значений, которые будут обработаны как список для сериализации.
  • kwargs (t.Any) – Обрабатывается как словарь для сериализации.
Тип возвращаемого значения:

Response

Отмеченный JSON

Компактное представление для без потерь сериализации нестандартных типов JSON. SecureCookieSessionInterface использует это для сериализации данных сессии, но это может быть полезно и в других местах. Его можно расширить для поддержки других типов.

class flask.json.tag.TaggedJSONSerializer

Сериализатор, который использует систему меток для компактного представления объектов, которые не являются типами JSON. Передается как промежуточный сериализатор в itsdangerous.Serializer.

Поддерживаются следующие дополнительные типы:

  • dict
  • tuple
  • bytes
  • Markup
  • UUID
  • datetime
default_tags = [<class 'flask.json.tag.TagDict'>, <class 'flask.json.tag.PassDict'>, <class 'flask.json.tag.TagTuple'>, <class 'flask.json.tag.PassList'>, <class 'flask.json.tag.TagBytes'>, <class 'flask.json.tag.TagMarkup'>, <class 'flask.json.tag.TagUUID'>, <class 'flask.json.tag.TagDateTime'>]

Классы меток для привязки при создании сериализатора. Другие метки можно добавить позже, используя register().

dumps(value)

Отметить значение и вывести его в компактную строку JSON.

Параметры:

value (Any) –

Тип возвращаемого значения:

str

loads(value)

Загрузить данные из строки JSON и десериализовать все помеченные объекты.

Параметры:

value (str) –

Тип возвращаемого значения:

Any

register(tag_class, force=False, index=None)

Зарегистрировать новую метку с этим сериализатором.

Параметры:
  • tag_class (type[flask.json.tag.JSONTag]) – класс метки для регистрации. Будет создан экземпляр с этим экземпляром сериализатора.
  • force (bool) – перезаписать существующую метку. Если false (по умолчанию), возникает KeyError.
  • index (int | None) – индекс для вставки новой метки в порядок меток. Полезно, когда новая метка является частным случаем существующей метки. Если None (по умолчанию), метка добавляется в конец порядка.
Исключения:

KeyError – если ключ метки уже зарегистрирован и force не равно true.

Тип возвращаемого значения:

None

tag(value)

Преобразовать значение в помеченное представление, если необходимо.

Параметры:

value (Any) –

Тип возвращаемого значения:

dict[str, Any]

untag(value)

Преобразовать помеченное представление обратно в исходный тип.

Параметры:

value (dict[str, Any]) –

Тип возвращаемого значения:

Any

class flask.json.tag.JSONTag(serializer)

Базовый класс для определения меток типов для TaggedJSONSerializer.

Параметры:

serializer (TaggedJSONSerializer) –

check(value)

Проверить, должно ли данное значение быть помечено этой меткой.

Параметры:

value (Any) –

Тип возвращаемого значения:

bool

key: str | None = None

Метка для маркировки сериализованного объекта. Если None, эта метка используется только как промежуточный шаг при маркировке.

tag(value)

Преобразовать значение в допустимый тип JSON и добавить вокруг него структуру тега.

Параметры:

value (Any) –

Тип возвращаемого значения:

Any

to_json(value)

Преобразовать Python-объект в объект, являющийся допустимым типом JSON. Метка будет добавлена позже.

Параметры:

value (Any) –

Тип возвращаемого значения:

Any

to_python(value)

Преобразовать JSON-представление обратно в правильный тип. Метка уже будет удалена.

Параметры:

value (Any) –

Тип возвращаемого значения:

Any

Посмотрим пример, который добавляет поддержку OrderedDict. Словари в JSON не имеют порядка, поэтому для обработки этого мы будем выгружать элементы в виде списка пар [key, value]. Подклассируйте JSONTag и присвойте новый ключ ' od' для идентификации типа. Сериализатор сессий обрабатывает словари в первую очередь, поэтому вставьте новый тег в начало порядка, так как OrderedDict должен обрабатываться до dict.

from flask.json.tag import JSONTag

class TagOrderedDict(JSONTag):
    __slots__ = ('serializer',)
    key = ' od'

    def check(self, value):
        return isinstance(value, OrderedDict)

    def to_json(self, value):
        return [[k, self.serializer.tag(v)] for k, v in iteritems(value)]

    def to_python(self, value):
        return OrderedDict(value)

app.session_interface.serializer.register(TagOrderedDict, index=0)

Представление шаблонов

flask.render_template(template_name_or_list, **context)

Отобразить шаблон по имени с заданным контекстом.

Параметры:
  • template_name_or_list (str | Template | list[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 (str | Template | list[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 | os.PathLike) – путь, относительно которого считываются файлы. Когда объект конфигурации создаётся приложением, это корневой путь приложения root_path.
  • defaults (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, text=True)

Обновляет значения в конфигурации из файла, который загружается с помощью параметра load. Загруженные данные передаются методу from_mapping().

import json
app.config.from_file("config.json", load=json.load)

import tomllib
app.config.from_file("config.toml", load=tomllib.load, text=False)
Параметры:
  • filename (str | PathLike) – путь к файлу данных. Это может быть абсолютный путь или относительный к корневому пути конфигурации.
  • load (Callable[[Reader], Mapping] где Reader реализует метод read.) – функция, которая принимает дескриптор файла и возвращает отображение загруженных данных из файла.
  • silent (bool) – игнорировать файл, если он не существует.
  • text (bool) – открыть файл в текстовом или двоичном режиме.
Возвращает:

True если файл был успешно загружен.

Тип возвращаемого значения:

bool

Изменено в версии 2.3: Добавлен параметр text.

Журнал изменений

Введено в версии 2.0.

from_mapping(mapping=None, **kwargs)

Обновляет конфигурацию, как update(), игнорируя элементы с не-заглавными ключами.

Возвращает:

Всегда возвращает True.

Параметры:
  • mapping (Mapping[str, Any] | None) –
  • 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 (object | str) – имя импорта или объект

Тип возвращаемого значения:

None

from_prefixed_env(prefix='FLASK', *, loads=<function loads>)

Загрузить все переменные окружения, начинающиеся с FLASK_, удаляя префикс из ключа env для ключа конфигурации. Значения передаются через функцию загрузки для попытки преобразования их в типы, более специфичные, чем строки.

Ключи загружаются в порядке sorted().

Функция загрузки по умолчанию пытается разобрать значения как любой допустимый тип JSON, включая словари и списки.

Конкретные элементы в вложенных словарях можно установить, разделив ключи двойным подчеркиванием (__). Если промежуточного ключа не существует, он будет инициализирован пустым словарем.

Параметры:
  • префикс (str) – Загрузить переменные среды, начинающиеся с этого префикса, разделенного подчеркиванием (_).
  • loads (Callable[[str], Any]) – Передать каждое строковое значение в эту функцию и использовать возвращённое значение в качестве значения конфигурации. Если возникает любая ошибка, она игнорируется, и значение остаётся строкой. По умолчанию json.loads().
Тип возвращаемого значения:

bool

Журнал изменений

Введено в версии 2.1.

from_pyfile(filename, silent=False)

Обновляет значения в конфигурации из файла Python. Эта функция ведет себя так, как если бы файл был импортирован как модуль с помощью функции from_object().

Параметры:
  • имя_файла (str | PathLike) – имя файла конфигурации. Это может быть абсолютное имя файла или имя файла относительно корневого пути.
  • немой (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'
}

Это часто бывает полезно, когда параметры конфигурации напрямую отображаются в ключевых аргументах функций или конструкторах классов.

Параметры:
  • пространство_имен (str) – пространство имен конфигурации
  • нижний_регистр (bool) – флаг, указывающий, должны ли ключи результирующего словаря быть в нижнем регистре
  • обрезка_пространства_имен (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.

Параметры:

генератор_или_функция (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 (Request | None) –
  • session (SessionMixin | None) –
copy()

Создаёт копию этого контекста запроса с тем же объектом запроса. Это можно использовать для перемещения контекста запроса в другую зелёную нить. Поскольку фактический объект запроса тот же, это нельзя использовать для перемещения контекста запроса в другую нить, если доступ к объекту запроса не заблокирован.

Изменения

Изменено в версии 1.1: Используется текущий объект сессии вместо перезагрузки исходных данных. Это предотвращает flask.session от указания на устаревший объект.

Добавлена в версии 0.10.

Тип возвращаемого значения:

RequestContext

match_request()

Может быть переопределён подклассом для подключения к сопоставлению запроса.

Тип возвращаемого значения:

None

pop(exc=<object object>)

Извлекает контекст запроса и отвязывает его, выполнив это действие. Это также вызовет выполнение функций, зарегистрированных декоратором teardown_request().

Изменения

Изменено в версии 0.9: Добавлен аргумент exc.

Параметры:

exc (BaseException | None) –

Тип возвращаемого значения:

None

flask.globals.request_ctx

Текущий RequestContext. Если контекст запроса не активен, обращение к атрибутам этого прокси вызовет RuntimeError.

Это внутренний объект, который имеет решающее значение для обработки запросов Flask. Обращение к нему в большинстве случаев не требуется. Скорее всего, вам нужен request и session.

class flask.ctx.AppContext(app)

Контекст приложения содержит информацию, специфичную для приложения. Контекст приложения создаётся и помещается в начале каждого запроса, если он ещё не активен. Контекст приложения также помещается при выполнении команд CLI.

Параметры:

app (Flask) –

pop(exc=<object object>)

Извлекает контекст приложения.

Параметры:

exc (BaseException | None) –

Тип возвращаемого значения:

None

push()

Привязывает контекст приложения к текущему контексту.

Тип возвращаемого значения:

None

flask.globals.app_ctx

Текущий AppContext. Если контекст приложения не активен, обращение к атрибутам этого прокси вызовет RuntimeError.

Это внутренний объект, который имеет решающее значение для обработки запросов Flask. Обращение к нему в большинстве случаев не требуется. Скорее всего, вам нужен current_app и g вместо него.

class flask.blueprints.BlueprintSetupState(blueprint, app, options, first_registration)

Временный объект-хранилище для регистрации Blueprint с приложением. Экземпляр этого класса создаётся методом make_setup_state() и далее передаётся всем функциям обратного вызова регистрации.

Параметры:
  • blueprint (Blueprint) –
  • app (Flask) –
  • options (t.Any) –
  • first_registration (bool) –
add_url_rule(rule, endpoint=None, view_func=None, **options)

Вспомогательный метод для регистрации правила (и необязательно функции представления) в приложении. Конечная точка автоматически префиксна с именем Blueprint.

Параметры:
  • rule (str) –
  • endpoint (str | None) –
  • view_func (Callable | None) –
  • options (Any) –
Тип возвращаемого значения:

None

app

ссылка на текущее приложение

blueprint

ссылка на Blueprint, создавший это состояние настроек.

first_registration

Поскольку Blueprint может быть зарегистрирован несколько раз в приложении, и не всё нужно регистрировать несколько раз, этот атрибут может быть использован для определения, был ли Blueprint зарегистрирован ранее.

options

словарь со всеми параметрами, переданными методу register_blueprint().

subdomain

Поддомен, для которого Blueprint должен быть активен, None в противном случае.

url_defaults

Словарь с значениями по умолчанию для URL, которые были определены с помощью Blueprint.

url_prefix

Префикс, который должен использоваться для всех URL, определённых в Blueprint.

Сигналы

Сигналы предоставляются библиотекой Blinker. См. Сигналы для введения.

flask.template_rendered

Этот сигнал отправляется, когда шаблон успешно был рендеризован. Сигнал вызывается с экземпляром шаблона как template и контекстом как словарь (названный context).

Пример подписчика:

def log_template_renders(sender, template, context, **extra):
    sender.logger.debug('Rendering template "%s" with context %s',
                        template.name or 'string template',
                        context)

from flask import template_rendered
template_rendered.connect(log_template_renders, app)
flask.before_render_template

Этот сигнал отправляется перед процессом рендеринга шаблона. Сигнал вызывается с экземпляром шаблона как template и контекстом как словарь (названный context).

Пример подписчика:

def log_template_renders(sender, template, context, **extra):
    sender.logger.debug('Rendering template "%s" with context %s',
                        template.name or 'string template',
                        context)

from flask import before_render_template
before_render_template.connect(log_template_renders, app)
flask.request_started

Этот сигнал отправляется, когда контекст запроса настроен, перед началом обработки запроса. Поскольку контекст запроса уже привязан, подписчик может получить доступ к запросу с помощью стандартных глобальных прокси, таких как request.

Пример подписчика:

def log_request(sender, **extra):
    sender.logger.debug('Request context is set up')

from flask import request_started
request_started.connect(log_request, app)
flask.request_finished

Этот сигнал отправляется непосредственно перед отправкой ответа клиенту. Он передаёт ответ, который нужно отправить, под именем response.

Пример подписчика:

def log_response(sender, response, **extra):
    sender.logger.debug('Request context is about to close down. '
                        'Response: %s', response)

from flask import request_finished
request_finished.connect(log_response, app)
flask.got_request_exception

Этот сигнал отправляется, когда во время обработки запроса происходит необработанное исключение, включая отладку. Исключение передаётся подписчику как exception.

Этот сигнал не отправляется для HTTPException, или для других исключений, для которых зарегистрированы обработчики ошибок, если исключение не было вызвано обработчиком ошибок.

Этот пример показывает, как выполнить дополнительное логирование, если было поднято теоретическое SecurityException исключение:

from flask import got_request_exception

def log_security_exception(sender, exception, **extra):
    if not isinstance(exception, SecurityException):
        return

    security_logger.exception(
        f"SecurityException at {request.url!r}",
        exc_info=exception,
    )

got_request_exception.connect(log_security_exception, app)
flask.request_tearing_down

Этот сигнал отправляется, когда происходит разборка запроса. Он всегда вызывается, даже если возникло исключение. В настоящее время функции, подписывающиеся на этот сигнал, вызываются после стандартных обработчиков разборки, но на этом нельзя полагаться.

Пример подписчика:

def close_db_connection(sender, **extra):
    session.close()

from flask import request_tearing_down
request_tearing_down.connect(close_db_connection, app)

Начиная с Flask 0.9, также будет передан exc аргумент с ссылкой на исключение, вызвавшее разборку, если оно было.

flask.appcontext_tearing_down

Этот сигнал отправляется, когда контекст приложения разбирается. Он всегда вызывается, даже если возникло исключение. В настоящее время функции, подписывающиеся на этот сигнал, вызываются после стандартных обработчиков разборки, но на этом нельзя полагаться.

Пример подписчика:

def close_db_connection(sender, **extra):
    session.close()

from flask import appcontext_tearing_down
appcontext_tearing_down.connect(close_db_connection, app)

Также будет передан exc аргумент со ссылкой на исключение, вызвавшее разборку, если оно было.

flask.appcontext_pushed

Этот сигнал отправляется при создании контекста приложения. Отправителем является приложение. Это обычно полезно для юнит-тестов, чтобы временно подключить информацию. Например, его можно использовать для ранней установки ресурса в объект g.

Пример использования:

from contextlib import contextmanager
from flask import appcontext_pushed

@contextmanager
def user_set(app, user):
    def handler(sender, **kwargs):
        g.user = user
    with appcontext_pushed.connected_to(handler, app):
        yield

А в коде теста:

def test_user_me(self):
    with user_set(app, 'john'):
        c = app.test_client()
        resp = c.get('/users/me')
        assert resp.data == 'username=john'
Changelog

Новый в версии 0.10.

flask.appcontext_popped

Этот сигнал отправляется при удалении контекста приложения. Отправителем является приложение. Обычно он совпадает с сигналом appcontext_tearing_down.

Changelog

Новый в версии 0.10.

flask.message_flashed

Этот сигнал отправляется, когда приложение выводит сообщение. Сообщение отправляется как message и категория как category.

Пример подписчика:

recorded = []
def record(sender, message, category, **extra):
    recorded.append((message, category))

from flask import message_flashed
message_flashed.connect(record, app)
Changelog

Новый в версии 0.10.

signals.signals_available

Устарело начиная с версии 2.3: Будет удалено в Flask 2.4. Сигналы всегда доступны

Базовые представления на основе классов

Журнал изменений

Новое в версии 0.7.

class flask.views.View

Подклассируйте этот класс и переопределите dispatch_request(), чтобы создать общее представление на основе класса. Вызовите as_view(), чтобы создать функцию представления, которая создаёт экземпляр класса с заданными аргументами и вызывает метод dispatch_request с любыми переменными URL.

Подробное руководство см. в Базовых представлениях на основе классов.

class Hello(View):
    init_every_request = False

    def dispatch_request(self, name):
        return f"Hello, {name}!"

app.add_url_rule(
    "/hello/<name>", view_func=Hello.as_view("hello")
)

Установите methods в классе, чтобы изменить принимаемые методы представления.

Установите decorators в классе, чтобы применить список декораторов к сгенерированной функции представления. Декораторы, применённые к самому классу, не будут применены к сгенерированной функции представления!

Установите init_every_request в False, чтобы повысить эффективность, если только вам не нужно хранить данные, глобальные для запроса, в self.

classmethod as_view(name, *class_args, **class_kwargs)

Преобразовать класс в функцию представления, которую можно зарегистрировать для маршрута.

По умолчанию сгенерированное представление создаст новый экземпляр класса представления для каждого запроса и вызовет метод dispatch_request(). Если класс представления устанавливает init_every_request в False, один и тот же экземпляр будет использоваться для каждого запроса.

За исключением name, все остальные аргументы, переданные этому методу, передаются методу __init__ класса представления.

Журнал изменений

Изменено в версии 2.2: Добавлен атрибут класса init_every_request.

Параметры:
  • name (str) –
  • class_args (t.Any) –
  • class_kwargs (t.Any) –
Тип возвращаемого значения:

ft.RouteCallable

decorators: ClassVar[list[Callable]] = []

Список декораторов для применения в порядке следования к сгенерированной функции представления. Помните, что синтаксис @decorator применяется снизу вверх, поэтому первый декоратор в списке будет нижним декоратором.

Журнал изменений

Новое в версии 0.8.

dispatch_request()

Действительное поведение функции представления. Подклассы должны переопределить этот метод и вернуть допустимый ответ. Любые переменные из правила URL передаются в качестве ключевых аргументов.

Тип возвращаемого значения:

ft.ResponseReturnValue

init_every_request: ClassVar[bool] = True

По умолчанию создаётся новый экземпляр этого класса представления для каждого запроса. Если подкласс представления устанавливает это значение в False, один и тот же экземпляр используется для каждого запроса.

Один экземпляр более эффективен, особенно если во время инициализации выполняется сложная настройка. Однако хранение данных в self больше не безопасно при работе с несколькими запросами, и вместо этого следует использовать g.

Журнал изменений

Новое в версии 2.2.

methods: ClassVar[Collection[str] | None] = None

Методы, для которых зарегистрировано это представление. Использует тот же по умолчанию (["GET", "HEAD", "OPTIONS"]) стандарт, что и route и add_url_rule по умолчанию.

provide_automatic_options: ClassVar[bool | None] = None

Управление тем, обрабатывается ли метод OPTIONS автоматически. Использует тот же по умолчанию (True) стандарт, что и route и add_url_rule по умолчанию.

class flask.views.MethodView

Перенаправляет методы запроса на соответствующие методы экземпляра. Например, если вы реализуете метод get, он будет использоваться для обработки запросов GET. Это может быть полезно для определения API REST.

methods автоматически устанавливается на основе определённых в классе методов.

class CounterAPI(MethodView):
    def get(self):
        return str(session.get("counter", 0))

    def post(self):
        session["counter"] = session.get("counter", 0) + 1
        return redirect(url_for("counter"))

app.add_url_rule(
    "/counter", view_func=CounterAPI.as_view("counter")
)
Подробное руководство см. в Базовых представлениях на основе классов.

dispatch_request(**kwargs)

Действительное поведение функции представления. Подклассы должны переопределить этот метод и вернуть допустимый ответ. Любые переменные из правила URL передаются в качестве ключевых аргументов.

Параметры:

kwargs (t.Any) –

Тип возвращаемого значения:

ft.ResponseReturnValue

Регистрация маршрутов URL

Существует три способа определения правил для системы маршрутизации:

  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 — для страницы 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__: Имя функции по умолчанию используется как точка входа. Если явно задана точка входа, используется это значение. Кроме того, это значение по умолчанию префиксется именем модуля (blueprint), что невозможно настроить непосредственно из функции.
  • methods: Если при добавлении правила URL не указаны методы, Flask будет проверять объект функции представления на наличие атрибута methods. Если такой атрибут существует, он будет извлечен информацию о методах оттуда.
  • provide_automatic_options: если этот атрибут установлен, Flask либо включит, либо отключит автоматическую реализацию HTTP-ответа OPTIONS. Это может быть полезно при работе с декораторами, которые хотят настраивать ответ OPTIONS на основе конкретной функции представления.
  • required_methods: если этот атрибут установлен, Flask всегда добавит эти методы при регистрации правила URL, даже если методы были явно переопределены в вызове route().

Полный пример:

def index():
    if request.method == 'OPTIONS':
        # custom options handling here
        ...
    return 'Hello World!'
index.provide_automatic_options = False
index.methods = ['GET', 'OPTIONS']

app.add_url_rule('/', index)
Журнал изменений

В версии 0.8: Функциональность provide_automatic_options была добавлена.

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) –
Журнал изменений

Изменено в версии 2.2: Добавлены опции -A/--app, --debug/--no-debug, -e/--env-file.

Изменено в версии 2.2: При выполнении команд app.cli контекст приложения подталкивается, поэтому @with_appcontext больше не требуется для этих команд.

Изменено в версии 1.0: Если установлено, python-dotenv будет использоваться для загрузки переменных среды из файлов .env и .flaskenv.

get_command(ctx, name)

Принимая во внимание контекст и имя команды, это возвращает объект Command, если он существует, или возвращает None.

list_commands(ctx)

Возвращает список имен подкоманд в порядке их отображения.

make_context(info_name, args, parent=None, **extra)

Эта функция, когда получает имя info и аргументы, запускает разбор и создает новый Context. Она не вызывает фактический обратный вызов команды.

Чтобы быстро настроить используемый класс контекста без переопределения этого метода, установите атрибут context_class.

Параметры:
  • info_name (str | None) – имя info для этого вызова. Обычно это самое описательное имя для скрипта или команды. Для скрипта верхнего уровня это обычно имя скрипта, для команд ниже - имя команды.
  • args (list[str]) – аргументы для разбора в виде списка строк.
  • parent (Context | None) – родительский контекст, если доступен.
  • extra (Any) – дополнительные ключевые аргументы, переданные конструктору контекста.
Тип возвращаемого значения:

Context

Изменено в версии 8.0: Добавлен атрибут context_class.

parse_args(ctx, args)

Принимая во внимание контекст и список аргументов, создает парсер и анализирует аргументы, а затем изменяет контекст по мере необходимости. Это автоматически вызывается методом make_context().

Параметры:
  • ctx (Context) –
  • args (list[str]) –
Тип возвращаемого значения:

list[str]

class flask.cli.AppGroup(name=None, commands=None, **attrs)

Этот класс работает аналогично обычной click группе Group, но изменяет поведение декоратора command() таким образом, что функции автоматически оборачиваются в with_appcontext().

Не следует путать с FlaskGroup.

Параметры:
  • name (str | None) –
  • commands (Dict[str, Command] | Sequence[Command] | None) –
  • attrs (Any) –
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) –
app_import_path

Путь импорта приложения Flask (необязательно).

create_app

Необязательная функция, которая принимает данные о скрипте для создания экземпляра приложения.

data: dict[t.Any, t.Any]

Словарь с произвольными данными, которые можно связать с этими сведениями о скрипте.

load_app()

Загружает приложение Flask (если оно еще не загружено) и возвращает его. Вызов этого метода несколько раз приведет только к возвращению уже загруженного приложения.

Тип возвращаемого значения:

Flask

flask.cli.load_dotenv(path=None)

Загрузка файлов “dotenv” в порядке приоритета для установки переменных окружения.

Если переменная окружения уже установлена, она не перезаписывается, поэтому более ранние файлы в списке имеют приоритет перед более поздними.

Это пустая операция, если модуль python-dotenv не установлен.

Параметры:

path (str | PathLike | None) – Загрузка файла по этому пути вместо поиска.

Возвращаемое значение:

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 (F) –

Тип возвращаемого значения:

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.3.x/api/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API