Spec-Zone.ru › Flask

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[str] | 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[str] | None) — папка, содержащая шаблоны, которые следует использовать для приложения. По умолчанию папка 'templates' в корне приложения.
  • instance_path (str | None) — альтернативный путь к экземпляру приложения. По умолчанию предполагается, что папка 'instance' рядом с пакетом или модулем является путём экземпляра.
  • instance_relative_config (bool) — если установлено в True, относительные имена файлов для загрузки конфигурации предполагаются относительными к пути экземпляра, а не к корню приложения.
  • root_path (str | None) — путь к корню файлов приложения. Это нужно задавать вручную только в тех случаях, когда его невозможно определить автоматически, например, для пакетов с именованными пространствами.
request_class

псевдоним Request

response_class

псевдоним Response

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

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

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

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

cli: Group

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

get_send_file_max_age(filename)

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

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

Обратите внимание, что это дубликат того же метода в классе Flask.

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

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

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

Параметры:

filename (str | None)

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

int | None

END_OF_DOCUMENT_MARKER
send_static_file(filename)

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

Обратите внимание, что это дубликат той же функции в классе Flask.

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

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

Параметры:

filename (строка)

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

Response

open_resource(resource, mode='rb', encoding=None)

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

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

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

IO

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

open_instance_resource(resource, mode='rb', encoding='utf-8')

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

Параметры:
  • resource (строка) – Путь к ресурсу относительно instance_path.
  • mode (строка) – Режим открытия файла.
  • encoding (строка | None) – Кодировка открытия файла при открытии в текстовом режиме. Игнорируется при открытии в бинарном режиме.
Тип возвращаемого значения:

IO

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

create_jinja_environment()

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

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

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

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

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

Среда

create_url_adapter(request)

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

Изменено в версии 3.1: Если SERVER_NAME задан, он не ограничивает запросы только указанным доменом, как для subdomain_matching так и для host_matching.

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

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

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

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

Параметры:

request (Request | None)

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

MapAdapter | None

update_template_context(context)

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

Параметры:

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

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

None

make_shell_context()

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

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

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

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

словарь[строка, любой]

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

Parameters:
  • 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() для получения дополнительной информации.
Return type:

None

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

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

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

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

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

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

Parameters:
  • use_cookies (bool)
  • kwargs (t.Any)
Return type:

FlaskClient

test_cli_runner(**kwargs)

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

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

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

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

Parameters:

kwargs (t.Any)

Return type:

FlaskCliRunner

handle_http_exception(e)

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

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

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

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

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

Parameters:

e (HTTPException)

Return type:

HTTPException | ft.ResponseReturnValue

handle_user_exception(e)

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

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

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

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

Параметры:

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

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

HTTPException | ft.ResponseReturnValue

handle_exception(e)

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

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

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

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

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

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

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

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

Параметры:

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

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

Ответ

log_exception(exc_info)

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

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

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

Параметры:

exc_info (Кортеж[Тип, BaseException, TracebackType] | Кортеж[None, None, None])

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

None

dispatch_request()

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

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

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

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

ft.ResponseReturnValue

full_dispatch_request()

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

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

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

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

Ответ

make_default_options_response()

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

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

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

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

Ответ

ensure_sync(func)

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

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

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

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

Параметры:

func (Вызываемый объект[[...], Любой])

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

Вызываемый объект[[…], Любой]

async_to_sync(func)

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

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

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

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

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

Параметры:

func (Вызываемый объект[[...], Корутина[Любой, Любой, Любой]])

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

Вызываемый объект[[…], Любой]

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.

Если построение 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) или требовать внешнего URL (True). Внешние URL включают схему и домен. По умолчанию URL являются внешними, если запрос не активен.
  • values (Any) – Значения для использования в переменных частях правила URL. Неизвестные ключи добавляются как аргументы запроса, как ?a=b&c=d.
Тип возвращаемого значения:

str

Изменения

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

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: Ранее кортеж интерпретировался как аргументы для объекта ответа.

preprocess_request()

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

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

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

ft.ResponseReturnValue | None

process_response(response)

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

Изменения

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

Параметры:

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

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

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

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

Response

END_OF_DOCUMENT_MARKER
do_teardown_request(exc=_sentinel)

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

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

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

Параметры:

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

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

None

Изменения

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

do_teardown_appcontext(exc=_sentinel)

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

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

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

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

Изменения

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

Параметры:

exc (BaseException | None)

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

None

app_context()

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

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

with app.app_context():
    init_db()

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

Изменения

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

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

AppContext

request_context(environ)

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

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

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

Параметры:

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

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

RequestContext

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

wsgi_app(environ, start_response)

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

app = MyMiddleware(app)

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

app.wsgi_app = MyMiddleware(app.wsgi_app)

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

Изменения

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

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

cabc.Iterable[bytes]

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

Изменения

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

Параметры:

f (T_after_request)

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

T_after_request

app_ctx_globals_class

псевдоним _AppCtxGlobals

auto_find_instance_path()

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

Изменения

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

Параметры:

f (T_before_request)

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

T_before_request

config_class

псевдоним Config

context_processor(f)

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

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

Parameters:

f (T_template_context_processor)

Return type:

T_template_context_processor

create_global_jinja_loader()

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

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

Changelog

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

Return type:

DispatchingJinjaLoader

property debug: bool

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

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

По умолчанию: False

delete(rule, **options)

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

Changelog

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

Parameters:
  • rule (str)
  • options (Any)
Return type:

Callable[[T_route], T_route]

endpoint(endpoint)

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

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

@app.endpoint("example")
def example():
    ...
Parameters:

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

Return type:

Callable[[F], F]

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. При использовании на объекте приложения, это может обрабатывать ошибки со всех запросов. При использовании на blueprint, это может обрабатывать ошибки с запросов, которые обрабатывает blueprint. Для регистрации с blueprint и влияния на каждый запрос, используйте Blueprint.app_errorhandler().

Changelog

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

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

Parameters:

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

Return type:

Callable[[T_error_handler], T_error_handler]

get(rule, **options)

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

Changelog

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

Parameters:
  • rule (str)
  • options (Any)
Return type:

Callable[[T_route], T_route]

handle_url_build_error(error, endpoint, values)

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

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

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

str

property has_static_folder: bool

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

Changelog

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

inject_url_defaults(endpoint, values)

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

Changelog

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

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

None

iter_blueprints()

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

Changelog

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

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

t.ValuesView[Blueprint]

property jinja_env: Environment

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

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

jinja_environment

Псевдоним Environment

property jinja_loader: BaseLoader | None

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

Changelog

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

jinja_options: dict[str, t.Any] = {}

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

Changelog

Изменено в версии 1.1.0: Это dict вместо ImmutableDict, для более простого конфигурирования.

json_provider_class

Псевдоним DefaultJSONProvider

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

property name: str

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

Changelog

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

patch(rule, **options)

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

Changelog

Добавлен в версии 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"].

Changelog

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

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

Callable[[T_route], T_route]

put(rule, **options)

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

Changelog

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

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

Callable[[T_route], T_route]

redirect(location, code=302)

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

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

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

BaseResponse

Changelog

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

register_blueprint(blueprint, **options)

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

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

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

None

Changelog

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

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

register_error_handler(code_or_exception, f)

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

Changelog

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

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

None

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]

secret_key

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

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

select_jinja_autoescape(filename)

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

Changelog

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

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

Параметры:

filename (str)

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

bool

shell_context_processor(f)

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

Changelog

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

Параметры:

f (T_shell_context_processor)

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

T_shell_context_processor

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

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

with app.test_request_context():
    ...

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

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

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

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

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

Параметры:

f (T_teardown)

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

T_teardown

template_filter(name=None)

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

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

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

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

Callable[[T_template_filter], T_template_filter]

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_class: type[FlaskCliRunner] | None = None

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

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

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

test_client_class: type[FlaskClient] | None = None

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

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

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

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.

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

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

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

Параметры:

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

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

bool

url_defaults(f)

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

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

Параметры:

f (T_url_defaults)

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

T_url_defaults

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

instance_path

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

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

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

config

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

aborter

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

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

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

json: JSONProvider

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

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

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

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

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

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.

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

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

teardown_appcontext_funcs: list[ft.TeardownCallable]

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

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

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

shell_context_processors: list[ft.ShellContextProcessorCallable]

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

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

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

blueprints: dict[str, Blueprint]

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

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

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

extensions: dict[str, t.Any]

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

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

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

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

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
import_name

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

template_folder

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

root_path

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

view_functions: dict[str, ft.RouteCallable]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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=_sentinel)
Параметры:
  • name (str)
  • import_name (str)
  • static_folder (str | os.PathLike[str] | None)
  • static_url_path (str | None)
  • template_folder (str | os.PathLike[str] | None)
  • url_prefix (str | None)
  • subdomain (str | None)
  • url_defaults (dict[str, t.Any] | None)
  • root_path (str | None)
  • cli_group (str | None)
cli: Group

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

get_send_file_max_age(filename)

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

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

Обратите внимание, что это дубликат того же метода в классе Flask.

Изменения

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

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

Параметры:

filename (str | None)

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

int | None

send_static_file(filename)

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

Обратите внимание, что это дубликат того же метода в классе Flask.

Изменения

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

Параметры:

filename (str)

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

Response

open_resource(resource, mode='rb', encoding='utf-8')

Открывает файл ресурса, относящийся к root_path, для чтения. Эквивалент метода open_resource() приложения, относящийся к шаблону.

Параметры:
  • resource (str) – Путь к ресурсу, относящийся к root_path.
  • mode (str) – Режим открытия файла. Поддерживается только чтение, допустимые значения — "r" (или "rt") и "rb".
  • encoding (str | None) – Кодировка открытия файла при открытии в текстовом режиме. Игнорируется при открытии в двоичном режиме.
Тип возвращаемого значения:

IO

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

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

END_OF_DOCUMENT_MARKER
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 с синим принтом. Подробная документация в Flask.add_url_rule().

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

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

None

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

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

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

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

Параметры:

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

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

Callable[[T_template_global], T_template_global]

app_template_test(name=None)

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

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

Добавлен в версии 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

context_processor(f)

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

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

Параметры:

f (T_template_context_processor)

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

T_template_context_processor

delete(rule, **options)

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

Changelog

Добавлен в версии 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]

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

Changelog

Добавлен в версии 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"].

Changelog

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

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

Callable[[T_route], T_route]

property has_static_folder: bool

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

Changelog

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

property jinja_loader: BaseLoader | None

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

Changelog

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

make_setup_state(app, options, first_registration=False)

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

Параметры:
  • app (App)
  • options (dict[str, t.Any])
  • first_registration (bool)
Тип возвращаемого значения:

BlueprintSetupState

patch(rule, **options)

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

Changelog

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

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

Callable[[T_route], T_route]

post(rule, **options)

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

Changelog

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

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

Callable[[T_route], T_route]

put(rule, **options)

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

Changelog

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

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

Callable[[T_route], T_route]

record(func)

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

Параметры:

func (Callable[[BlueprintSetupState], None])

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

None

record_once(func)

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

Параметры:

func (Callable[[BlueprintSetupState], None])

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

None

register(app, options)

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

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

None

Changelog

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

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

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

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

register_blueprint(blueprint, **options)

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

Changelog

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

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

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

None

register_error_handler(code_or_exception, f)

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

Changelog

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

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

None

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]

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

Параметры:

f (T_teardown)

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

T_teardown

url_defaults(f)

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

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

Параметры:

f (T_url_defaults)

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

T_url_defaults

url_value_preprocessor(f)

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

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

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

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

Параметры:

f (T_url_value_preprocessor)

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

T_url_value_preprocessor

import_name

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

template_folder

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

root_path

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

view_functions: dict[str, ft.RouteCallable]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Параметры:
  • environ (WSGIEnvironment)
  • populate_request (bool)
  • shallow (bool)
url_rule: Rule | None = None

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

Изменения

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

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

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

routing_exception: HTTPException | None = None

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

property max_content_length: int | None

Максимальное количество байтов, которое будет прочитано во время этого запроса. Если этот лимит превышен, возникает ошибка 413 RequestEntityTooLarge. Если он установлен в None, лимит на уровне приложения Flask не применяется. Однако, если он установлен в None и запрос не имеет заголовка Content-Length, а WSGI-сервер не указывает, что он прерывает поток, то данные не читаются, чтобы избежать бесконечного потока.

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

Изменено в версии 3.1: Это можно установить для каждого запроса.

Изменения

Изменено в версии 0.6: Это настраивается через конфигурацию Flask.

property max_form_memory_size: int | None

Максимальный размер в байтах для любого не-файлового поля формы в теле multipart/form-data. Если этот лимит превышен, возникает ошибка 413 RequestEntityTooLarge. Если он установлен в None, лимит на уровне приложения Flask не применяется.

Каждый запрос по умолчанию использует конфигурацию MAX_FORM_MEMORY_SIZE, которая по умолчанию равна 500_000. Он может быть установлен для конкретного request для применения лимита к этому конкретному представлению. Это следует устанавливать в соответствии с конкретными потребностями приложения или представления.

Изменено в версии 3.1: Это настраивается через конфигурацию Flask.

property max_form_parts: int | None

Максимальное количество полей, которые могут присутствовать в теле multipart/form-data. Если этот лимит превышен, возникает ошибка 413 RequestEntityTooLarge. Если он установлен в None, лимит на уровне приложения Flask не применяется.

Каждый запрос по умолчанию использует конфигурацию MAX_FORM_PARTS, которая по умолчанию равна 1_000. Он может быть установлен для конкретного request для применения лимита к этому конкретному представлению. Это следует устанавливать в соответствии с конкретными потребностями приложения или представления.

Изменено в версии 3.1: Это настраивается через конфигурацию Flask.

property endpoint: str | None

Конечный пункт, который сопоставился с URL запроса.

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

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

property blueprint: str | None

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

Будет None если конечный пункт не является частью модуля Blueprint, или если сопоставление URL не удалось или еще не выполнено.

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

property blueprints: list[str]

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

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

Изменения

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

on_json_loading_failed(e)

Вызывается, если get_json() терпит неудачу и не подавляется.

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

Параметры:

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

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

Any

Изменения

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

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 в ответе, чтобы указать, какие заголовки разрешены.

END_OF_DOCUMENT_MARKER
access_control_request_method

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

property access_route: list[str]

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

classmethod application(f)

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

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

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

Параметры:

f (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 cache_control: RequestCacheControl

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

close()

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

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

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

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

None

content_encoding

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

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

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

property content_length: int | None

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

content_md5

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

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

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

content_type

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

property cookies: ImmutableMultiDict[str, str]

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

property data: bytes

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

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

date

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

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

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

dict_storage_class

псевдоним ImmutableMultiDict

property 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), который позволяет создавать запросы с несколькими частями, поддерживает куки и т. д.

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

property host: str

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

property host_url: str

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

property if_match: ETags

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

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

ETags

property if_modified_since: datetime | None

Обработанный If-Modified-Since заголовок в виде объекта datetime.

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

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

property if_none_match: ETags

Объект, содержащий все теги в 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 Unsupported Media Type.

Changelog

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

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

list_storage_class

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

make_form_data_parser()

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

Changelog

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

Возвращаемый тип:

FormDataParser

max_forwards

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

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'}.

origin

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

parameter_storage_class

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

property pragma: HeaderSet

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

property range: Range | None

Обработанное поле заголовка Range.

Changelog

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

Возвращаемый тип:

Range

referrer

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

remote_user

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

property root_url: str

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

property script_root: str

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

property stream: IO[bytes]

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

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

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

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

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

Changelog

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

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

trusted_hosts: list[str] | None = None

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

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

Changelog

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

property url: str

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

property url_root: str

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

property user_agent: UserAgent

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

Changelog

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

user_agent_class

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

END_OF_DOCUMENT_MARKER
property values: CombinedMultiDict[str, str]

A werkzeug.datastructures.CombinedMultiDict that combines args and form.

For GET requests, only параметры запроса are present, not значения тела запроса.

Changelog

Изменено в версии 2.0: For GET requests, only параметры запроса are present, not значения тела запроса.

property want_form_data_parsed: bool

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

Changelog

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

environ: WSGIEnvironment

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

shallow: bool

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

method

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

scheme

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

server

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

root_path

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

path

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

query_string

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

headers

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

remote_addr

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

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)
default_mimetype: str | None = 'text/html'

значение MIME-типа по умолчанию, если он не предоставлен.

accept_ranges

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

Общие значения 'bytes' и 'none'.

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

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

property access_control_allow_credentials: bool

Разрешает ли браузер делиться учетными данными с кодом JavaScript. В рамках запроса предварительной обработки указывает, можно ли использовать учетные данные при кросс-доменном запросе.

access_control_allow_headers

Какие заголовки могут быть отправлены с кросс-доменным запросом.

access_control_allow_methods

Какие методы могут использоваться для кросс-доменного запроса.

access_control_allow_origin

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

access_control_expose_headers

Какие заголовки может использовать браузер для передачи в код JavaScript.

access_control_max_age

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

add_etag(overwrite=False, weak=False)

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

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

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

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

None

age

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

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

property allow: HeaderSet

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

automatically_set_content_length = True

Должен ли этот объект ответа автоматически устанавливать заголовок content-length, если это возможно? По умолчанию это значение истинно.

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

Добавлен в версии 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]

close()

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

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

Добавлен в версии 0.9: Теперь можно использовать в операторе with.

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

None

content_encoding

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

property content_language: HeaderSet

Поле сущностного заголовка Content-Language описывает естественный язык(и) целевой аудитории для включенной сущности. Обратите внимание, что это может не совпадать со всеми языками, используемыми в теле сущности.

content_length

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

content_location

Поле заголовка сущности Content-Location МОЖЕТ использоваться для предоставления местоположения ресурса для сущности, заключённой в сообщении, когда эта сущность доступна из местоположения, отличного от URI запрошенного ресурса.

content_md5

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

property content_range: ContentRange

Заголовок Content-Range в виде объекта ContentRange. Доступен даже если заголовок не задан.

Changelog

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

property content_security_policy: ContentSecurityPolicy

Заголовок Content-Security-Policy в виде объекта ContentSecurityPolicy. Доступен даже если заголовок не задан.

Заголовок Content-Security-Policy добавляет дополнительный уровень безопасности для выявления и смягчения определенных типов атак.

property content_security_policy_report_only: ContentSecurityPolicy

Заголовок Content-Security-policy-report-only в виде объекта ContentSecurityPolicy. Доступен даже если заголовок не задан.

Заголовок Content-Security-Policy-Report-Only добавляет политику CSP, которая не принуждается к выполнению, но отчитывается, тем самым помогая обнаружить определенные типы атак.

content_type

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

cross_origin_embedder_policy

Предотвращает загрузку документа любых ресурсов из другого источника, которые явно не предоставляют документу разрешение. Значения должны быть элементом перечисления werkzeug.http.COEP.

cross_origin_opener_policy

Позволяет управлять совместным использованием группы контекстов просмотра с документами из других источников. Значения должны быть элементом перечисления werkzeug.http.COOP.

property data: bytes | str

Дескриптор, который вызывает get_data() и set_data().

date

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

Changelog

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

default_status = 200

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

delete_cookie(key, path='/', domain=None, secure=False, httponly=False, samesite=None, partitioned=False)

Удаляет cookie. Без ошибок, если ключ не существует.

Параметры:
  • key (str) – ключ (имя) cookie, который необходимо удалить.
  • path (str | None) – если cookie, который нужно удалить, был ограничен путем, путь необходимо определить здесь.
  • domain (str | None) – если cookie, который нужно удалить, был ограничен доменом, этот домен необходимо определить здесь.
  • secure (bool) – Если True, cookie будет доступен только через HTTPS.
  • httponly (bool) – Запрещает доступ JavaScript к cookie.
  • samesite (str | None) – Ограничивает область действия cookie только запросами, которые являются «однодоменными».
  • partitioned (bool) – Если True, cookie будет разделен.
Тип возвращаемого значения:

None

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

Подготавливает объект ответа к сериализации. Делает следующее:

  • Буферизует ответ в список, игнорируя 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[байты]

get_data(as_text=False)

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

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

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

Изменения

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

Параметры:

as_text (bool)

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

байты | строка

get_etag()

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

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

кортеж[строка, bool] | кортеж[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 вместо этого.
Тип возвращаемого значения:

любой | 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).

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

кортеж[t.Iterable[байты], строка, список[кортеж[строка, строка]]]

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

Изменения

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

property is_streamed: bool

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

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

iter_encoded()

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

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

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

property json: Any | None

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

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

last_modified

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

Изменения

Изменено в версии 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 | строка) – Этот параметр диктует значение заголовка Accept-Ranges. Если False, заголовок не устанавливается. Если True, он будет установлен в "bytes". Если это строка, будет использовано это значение.
  • complete_length (целое число | None) – Будет использоваться только в действительных запросах на диапазон. Он установит значение полной длины Content-Range и вычислит фактическое значение Content-Length. Этот параметр обязателен для успешного завершения запросов на диапазон.
Возможные исключения:

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

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

Ответ

Изменения

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

make_sequence()

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

Изменения

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

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

None

property mimetype: str | None

Тип MIME (тип контента без набора символов и т. д.).

property mimetype_params: dict[str, str]

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

Изменения

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

property retry_after: datetime | None

Поле заголовка ответа Retry-After может использоваться с ответом 503 (Сервис недоступен), чтобы указать, как долго сервис, по оценке, будет недоступен для клиента-запрашивателя.

Время в секундах до истечения срока действия или дата.

Изменения

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

set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=False, httponly=False, samesite=None, partitioned=False)

Устанавливает куки.

Если размер заголовка cookie превышает max_cookie_size, выдаётся предупреждение, но заголовок всё равно устанавливается.

Параметры:
  • ключ (строка) – ключ (название) устанавливаемого cookie.
  • значение (строка) – значение cookie.
  • max_age (timedelta | целое число | None) – количество секунд, или None (по умолчанию), если cookie должен действовать только во время сессии браузера клиента.
  • expires (строка | datetime | целое число | вещественное число | None) – объект datetime или временная метка UNIX.
  • путь (строка | None) – ограничивает cookie заданным путем, по умолчанию он охватывает весь домен.
  • домен (строка | None) – если вы хотите установить cookie для разных доменов. Например, domain="example.com" установит cookie, который читается доменом www.example.com, foo.example.com и т. д. В противном случае cookie будет читаться только тем доменом, который его установил.
  • secure (bool) – Если True, cookie будет доступен только через HTTPS.
  • httponly (bool) – Запрещает доступ JavaScript к cookie.
  • samesite (строка | None) – Ограничивает область действия cookie тем, что он прикрепляется только к запросам «того же сайта».
  • разделенный (bool) – Если True, cookie будет разделён.
Тип возвращаемого значения:

None

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

END_OF_DOCUMENT_MARKER
set_data(value)

Устанавливает новую строку в качестве ответа. Значение должно быть строкой или байтами. Если устанавливается строка, она кодируется в кодировку ответа (по умолчанию utf-8).

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

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

Параметры:

значение (байты | строка)

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

None

set_etag(etag, weak=False)

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

Параметры:
  • etag (строка)
  • 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 был добавлен для вызовов аутентификации, использующих токен вместо параметров.

response: t.Iterable[str] | t.Iterable[bytes]

Тело ответа для отправки как итерируемый объект WSGI. Список строк или байтов представляет фиксированный ответ, любой другой итерируемый объект — потоковый ответ. Строки кодируются в байты как UTF-8.

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

direct_passthrough

Передать тело ответа непосредственно как итерируемый объект WSGI. Это можно использовать, когда тело — это двоичный файл или другой итератор байтов, чтобы пропустить некоторые ненужные проверки. Используйте send_file() вместо ручного задания.

autocorrect_location_header = False

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

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

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

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

property max_cookie_size: int

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

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

Сессии

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

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

class flask.session

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

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

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

new

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

modified

True если объект сессии обнаружил изменение. Имейте в виду, что изменения в изменяемых структурах не подхватываются автоматически, в этом случае необходимо явно установить атрибут в True самостоятельно. Вот пример:

# this change is not picked up because a mutable object (here
# a list) is changed.
session['objects'].append(42)
# so mark it as modified yourself
session.modified = True
permanent

Если установлено True, сессия существует в течение permanent_session_lifetime секунд. По умолчанию — 31 день. Если установлено False (что является значением по умолчанию), сессия будет удалена при закрытии браузера.

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

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

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

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

END_OF_DOCUMENT_MARKER
class flask.sessions.SessionInterface

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

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

class Session(dict, SessionMixin):
    pass

Если метод open_session() возвращает None Flask вызовет make_null_session() для создания сессии-заместителя, если поддержка сессий не может работать из-за отсутствия какого-либо требования. По умолчанию созданный класс NullSession будет жаловаться на то, что секретный ключ не задан.

Чтобы заменить интерфейс сессий в приложении, необходимо присвоить значение flask.Flask.session_interface:

app = Flask(__name__)
app.session_interface = MySessionInterface()

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

Изменения

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

null_session_class

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

Алиас класса NullSession

pickle_based = False

Флаг, указывающий, использует ли интерфейс сессии механизм pickle. Расширения Flask могут использовать этот флаг для принятия решения о том, как обрабатывать объект сессии.

Изменения

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

make_null_session(app)

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

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

Параметры:

app (Flask)

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

NullSession

is_null_session(obj)

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

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

Параметры:

obj (object)

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

bool

get_cookie_name(app)

Имя cookie сессии. Использует ``app.config[“SESSION_COOKIE_NAME”]``.

Параметры:

app (Flask)

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

str

get_cookie_domain(app)

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

Использует конфигурацию SESSION_COOKIE_DOMAIN.

Изменения

Изменено в версии 2.3: Не задано по умолчанию, не используется значение по умолчанию SERVER_NAME.

Параметры:

app (Flask)

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

str | None

get_cookie_path(app)

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

Параметры:

app (Flask)

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

str

get_cookie_httponly(app)

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

Параметры:

app (Flask)

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

bool

get_cookie_secure(app)

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

Параметры:

app (Flask)

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

bool

get_cookie_samesite(app)

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

Параметры:

app (Flask)

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

str | None

get_cookie_partitioned(app)

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

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

Parameters:

app (Flask)

Return type:

bool

get_expiration_time(app, session)

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

Parameters:
  • app (Flask)
  • session (SessionMixin)
Return type:

datetime | None

should_set_cookie(app, session)

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

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

Changelog

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

Parameters:
  • app (Flask)
  • session (SessionMixin)
Return type:

bool

open_session(app, request)

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

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

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

Parameters:
  • app (Flask)
  • request (Request)
Return type:

SessionMixin | None

save_session(app, session, response)

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

Parameters:
  • app (Flask)
  • session (SessionMixin)
  • response (Response)
Return type:

None

class flask.sessions.SecureCookieSessionInterface

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

salt = 'cookie-session'

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

static digest_method(string=b'')

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

Parameters:

string (bytes)

Return type:

Any

key_derivation = 'hmac'

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

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

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

session_class

Псевдоним SecureCookieSession

open_session(app, request)

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

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

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

Parameters:
  • app (Flask)
  • request (Request)
Return type:

SecureCookieSession | None

save_session(app, session, response)

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

Parameters:
  • app (Flask)
  • session (SessionMixin)
  • response (Response)
Return type:

None

class flask.sessions.SecureCookieSession(initial=None)

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

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

Параметры:

initial (c.Mapping[str, t.Any] | c.Iterable[tuple[str, t.Any]] | None)

modified = False

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

accessed = False

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

get(key, default=None)

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

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

Any

setdefault(key, default=None)

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

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

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

Any

class flask.sessions.NullSession(initial=None)

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

Параметры:

initial (c.Mapping[str, t.Any] | c.Iterable[tuple[str, t.Any]] | None)

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 (последний вошел, первый вышел). Вызывает KeyError, если словарь пуст.

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

setdefault(*args, **kwargs)

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

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

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

NoReturn

class flask.sessions.SessionMixin

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

property permanent: bool

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

modified = True

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

accessed = True

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

Замечание

Настройка 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)
session_transaction(*args, **kwargs)

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

with client.session_transaction() as session:
    session['value'] = 42

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

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

Iterator[SessionMixin]

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.

Запуск тестовых команд из командной строки

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

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

Параметры:
  • app (Flask)
  • kwargs (t.Any)
invoke(cli=None, args=None, **kwargs)

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

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

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

объект Result.

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

Result

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

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

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

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

Any

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

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

setdefault(name, default=None)

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

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

Any

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

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

END_OF_DOCUMENT_MARKER

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

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)

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

Пример:

import gevent
from flask import copy_current_request_context

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

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

Параметры:

f (F)

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

F

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 | Response) – Код состояния исключения, который должен быть зарегистрирован в app.aborter.
  • args (Any) – Передается исключению.
  • kwargs (Any) – Передается исключению.
Тип возвращаемого значения:

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[Response] | None) – Класс ответа для использования. Не используется, когда current_app активен, что использует app.response_class.
Тип возвращаемого значения:

Response

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

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

flask.make_response(*args)

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

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

def index():
    return render_template('index.html', foo=42)

Теперь вы можете сделать что-то вроде этого:

def index():
    response = make_response(render_template('index.html', foo=42))
    response.headers['X-Parachutes'] = 'parachutes are cool'
    return response

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

response = make_response(render_template('not_found.html'), 404)

Другой случай использования этой функции — принудительное преобразование значения возвращаемого функцией представления в ответ, что полезно при использовании декораторов представлений:

response = make_response(view_function())
response.headers['X-Parachutes'] = 'parachutes are cool'

Внутренне эта функция выполняет следующие действия:

  • если аргументы не переданы, создается новый аргумент ответа
  • если передан один аргумент, вызывается flask.Flask.make_response() с ним.
  • если передано более одного аргумента, аргументы передаются в функцию flask.Flask.make_response() в виде кортежа.
Журнал изменений

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

Параметры:

args (t.Any)

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

Response

flask.after_this_request(f)

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

Пример:

@app.route('/')
def index():
    @after_this_request
    def add_header(response):
        response.headers['X-Foo'] = 'Parachute'
        return response
    return 'Hello World!'

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

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

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

Параметры:

f (Callable[[Any], Any] | Callable[[Any], Awaitable[Any]])

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

Callable[[Any], Any] | Callable[[Any], Awaitable[Any]]

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[t.AnyStr] | 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] | str) – Каталог, в котором path должен находиться, относительно корневого пути текущего приложения. Это не должно быть значение, предоставленное клиентом, в противном случае это становится небезопасным.
  • path (os.PathLike[str] | 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 (Любой) – Данные для сериализации.
  • kwargs (Любой) – Аргументы, передаваемые в реализацию 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 (Любой) – Данные для сериализации.
  • fp (IO[строка]) – Файл, открытый для записи текста. Для корректного JSON должен использовать кодировку UTF-8.
  • kwargs (Любой) – Аргументы, передаваемые в реализацию 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 (Любой) – Аргументы, передаваемые в реализацию loads.
Тип возвращаемого значения:

Любой

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

Изменено в версии 2.3: Параметр app был удалён.

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

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

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

flask.json.load(fp, **kwargs)

Десериализовать данные в формате JSON, прочитанные из файла.

Если доступен current_app, он будет использовать метод app.json.load(), в противном случае будет использоваться json.load().

Parameters:
  • fp (IO) – Файл, открытый для чтения текста или UTF-8 байтов.
  • kwargs (Any) – Аргументы, передаваемые в реализацию load.
Return type:

Any

Changelog

Изменено в версии 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 на экземпляр класса.

Parameters:

app (App) – Экземпляр приложения. Он будет храниться как weakref.proxy на атрибуте _app.

Changelog

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

dumps(obj, **kwargs)

Сериализовать данные в формате JSON.

Parameters:
  • obj (Any) – Данные для сериализации.
  • kwargs (Any) – Можно передать в базовую библиотеку JSON.
Return type:

str

dump(obj, fp, **kwargs)

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

Parameters:
  • obj (Any) – Данные для сериализации.
  • fp (IO[str]) – Файл, открытый для записи текста. Должен использовать кодировку UTF-8 для корректного JSON.
  • kwargs (Any) – Можно передать в базовую библиотеку JSON.
Return type:

None

loads(s, **kwargs)

Десериализовать данные из JSON.

Parameters:
  • s (str | bytes) – Текст или UTF-8 байты.
  • kwargs (Any) – Можно передать в базовую библиотеку JSON.
Return type:

Any

load(fp, **kwargs)

Десериализовать данные из файла в формате JSON.

Parameters:
  • fp (IO) – Файл, открытый для чтения текста или UTF-8 байтов.
  • kwargs (Any) – Можно передать в базовую библиотеку JSON.
Return type:

Any

response(*args, **kwargs)

Сериализовать указанные аргументы в формате JSON и вернуть объект Response с MIME-типом application/json.

Функция jsonify() вызывает этот метод для текущего приложения.

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

Parameters:
  • args (t.Any) – Одно значение для сериализации или несколько значений, которые будут обработаны как список для сериализации.
  • kwargs (t.Any) – Обработать как словарь для сериализации.
Return type:

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

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, нестандартных для 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().

register(tag_class, force=False, index=None)

Регистрирует новую метку с этим сериализатором.

Параметры:
  • tag_class (type[JSONTag]) – класс метки для регистрации. Будет создан экземпляр с этим экземпляром сериализатора.
  • force (bool) – перезаписать существующую метку. Если false (по умолчанию), возникает KeyError.
  • index (int | None) – индекс для вставки новой метки в порядке меток. Полезно, когда новая метка является частным случаем существующей метки. Если None (по умолчанию), метка добавляется в конец порядка.
Исключения:

KeyError – если ключ метки уже зарегистрирован и force не true.

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

None

tag(value)

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

Параметры:

value (Any)

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

Any

untag(value)

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

Параметры:

value (dict[str, Any])

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

Any

dumps(value)

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

Параметры:

value (Any)

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

str

loads(value)

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

Параметры:

value (str)

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

Any

class flask.json.tag.JSONTag(serializer)

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

Параметры:

serializer (TaggedJSONSerializer)

key: str = ''

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

check(value)

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

Параметры:

value (Any)

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

bool

to_json(value)

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

Параметры:

value (Any)

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

Any

to_python(value)

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

Параметры:

value (Any)

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

Any

tag(value)

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

Параметры:

value (Any)

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

dict[str, 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 | 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 | 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

END_OF_DOCUMENT_MARKER

Настройка

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[str]) – путь, относительно которого читаются файлы. Когда объект конфигурации создается приложением, это корневой путь приложения root_path.
  • defaults (dict[str, t.Any] | None) – необязательный словарь значений по умолчанию
from_envvar(variable_name, silent=False)

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

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

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

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

bool

from_prefixed_env(prefix='FLASK', *, loads=json.loads)

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

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

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

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

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

bool

Изменения

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

from_pyfile(filename, silent=False)

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

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

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

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

bool

Изменения

Добавлен в версии 0.7: silent параметр.

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_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[str]) – Путь к файлу данных. Это может быть абсолютный путь или путь, относительный к корневому пути конфигурации.
  • 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.

get_namespace(namespace, lowercase=True, trim_namespace=True)

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

app.config['IMAGE_STORE_TYPE'] = 'fs'
app.config['IMAGE_STORE_PATH'] = '/var/app/images'
app.config['IMAGE_STORE_BASE_URL'] = 'http://img.website.com'
image_store_config = app.config.get_namespace('IMAGE_STORE_')

Полученный словарь image_store_config будет выглядеть так:

{
    'type': 'fs',
    'path': '/var/app/images',
    'base_url': 'http://img.website.com'
}

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

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

dict[str, Any]

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

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

Справочные данные по потокам

flask.stream_with_context(generator_or_function: Iterator) → Iterator
flask.stream_with_context(generator_or_function:Callable[[...],Iterator]) → Callable[[Iterator],Iterator]

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

Однако эта функция может помочь вам сохранить контекст на более длительное время:

from flask import stream_with_context, request, Response

@app.route('/stream')
def streamed_response():
    @stream_with_context
    def generate():
        yield 'Hello '
        yield request.args['name']
        yield '!'
    return Response(generate())

В качестве альтернативы ее также можно использовать вокруг определенного генератора:

from flask import stream_with_context, request, Response

@app.route('/stream')
def streamed_response():
    def generate():
        yield 'Hello '
        yield request.args['name']
        yield '!'
    return Response(stream_with_context(generate()))
Журнал изменений

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

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

class flask.ctx.RequestContext(app, environ, request=None, session=None)

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

Не пытайтесь использовать этот класс напрямую, вместо этого используйте test_request_context() и request_context() для создания этого объекта.

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

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

Параметры:
  • app (Flask)
  • environ (WSGIEnvironment)
  • request (Request | None)
  • session (SessionMixin | None)
copy()

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

Изменения

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

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

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

RequestContext

match_request()

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

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

None

pop(exc=_sentinel)

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

push()

Связывает контекст приложения с текущим контекстом.

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

None

pop(exc=_sentinel)

Извлекает контекст приложения.

Параметры:

exc (BaseException | None)

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

None

flask.globals.app_ctx

Текущий AppContext. Если контекст приложения не активен, обращение к атрибутам этого прокси вызовет RuntimeError.

Это внутренний объект, который является важным элементом в том, как Flask обрабатывает запросы. Обращение к нему не требуется в большинстве случаев. Скорее всего, вам нужны current_app и g вместо него.

class flask.blueprints.BlueprintSetupState(blueprint, app, options, first_registration)

Временный объект для регистрации плагина с приложением. Экземпляр этого класса создаётся методом make_setup_state() и впоследствии передаётся всем функциям обратного вызова регистрации.

Параметры:
  • blueprint (Blueprint)
  • app (App)
  • options (t.Any)
  • first_registration (bool)
app

ссылка на текущее приложение

blueprint

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

options

словарь со всеми параметрами, которые были переданы методу register_blueprint().

first_registration

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

subdomain

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

url_prefix

Префикс, который должен использоваться для всех определённых в плагине URL.

url_defaults

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

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

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

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

None

Сигналы

Сигналы предоставляются библиотекой 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.

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

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

Добавлена в версии 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.

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 по умолчанию.

decorators: ClassVar[list[Callable[[...], Any]]] = []

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

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

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

init_every_request: ClassVar[bool] = True

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

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

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

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

dispatch_request()

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

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

ft.ResponseReturnValue

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

class flask.views.MethodView

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

Это может быть полезно для определения REST API.

methods автоматически настраивается на основе методов, определённых в классе.

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

class CounterAPI(MethodView):
    def get(self):
        return str(session.get("counter", 0))

    def post(self):
        session["counter"] = session.get("counter", 0) + 1
        return redirect(url_for("counter"))

app.add_url_rule(
    "/counter", view_func=CounterAPI.as_view("counter")
)
dispatch_request(**kwargs)

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

Параметры:

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

  1. Если правило заканчивается косой чертой, а пользователь запрашивает его без косой черты, пользователь автоматически перенаправляется на ту же страницу с добавленной конечной косой чертой.
  2. Если правило не заканчивается конечной косой чертой, а пользователь запрашивает страницу с конечной косой чертой, генерируется ошибка 404 «Не найдено».

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

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

@app.route('/users/', defaults={'page': 1})
@app.route('/users/page/<int:page>')
def show_users(page):
    pass

Это указывает, что /users/ будет URL для первой страницы, а /users/page/N будет URL для страницы N.

Если URL содержит значение по умолчанию, он будет перенаправлен на его упрощенную форму с перенаправлением 301. В приведенном выше примере /users/page/1 будет перенаправлен на /users/. Если ваш маршрут обрабатывает запросы GET и POST, убедитесь, что маршрут по умолчанию обрабатывает только GET, так как перенаправления не могут сохранять данные формы.

@app.route('/region/', defaults={'id': 1})
@app.route('/region/<int:id>', methods=['GET', 'POST'])
def region(id):
   pass

Вот параметры, которые принимают route() и add_url_rule(). Единственное отличие состоит в том, что с параметром route функция представления определяется с помощью декоратора, а не параметра view_func.

rule

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

endpoint

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

view_func

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

defaults

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

subdomain

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

**options

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

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

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

  • __name__: Имя функции по умолчанию используется как конечная точка. Если конечная точка указана явно, используется это значение. Кроме того, по умолчанию к этому значению добавляется имя бланкета, что не может быть изменено из самой функции.
  • methods: Если методы не указаны при добавлении правила URL, Flask будет искать в самом объекте функции представления атрибут methods. Если он есть, Flask получит информацию о методах оттуда.
  • provide_automatic_options: Если этот атрибут установлен, Flask либо включит, либо отключит автоматическую реализацию HTTP OPTIONS ответа. Это может быть полезно при работе с декораторами, которые хотят настроить ответ OPTIONS на основе каждой функции представления.
  • required_methods: Если этот атрибут установлен, Flask всегда добавит эти методы при регистрации правила URL, даже если методы были явно переопределены в вызове route().

Полный пример:

def index():
    if request.method == 'OPTIONS':
        # custom options handling here
        ...
    return 'Hello World!'
index.provide_automatic_options = False
index.methods = ['GET', 'OPTIONS']

app.add_url_rule('/', index)
Журнал изменений

Добавлен в версии 0.8: Функциональность provide_automatic_options была добавлена.

Интерфейс командной строки

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)

Изменено в версии 3.1: -e path имеет приоритет над файлами по умолчанию .env и .flaskenv.

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

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

Параметры:
  • ctx (Context)
  • name (str)
Тип возвращаемого значения:

Command | None

list_commands(ctx)

Возвращает список имён подкоманд в порядке их появления.

Параметры:

ctx (Context)

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

list[str]

make_context(info_name, args, parent=None, **extra)

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

Чтобы быстро настроить используемый класс контекста без переопределения этого метода, задайте атрибут context_class.

Параметры:
  • info_name (str | None) – имя информации для данного вызова. Обычно это наиболее описательное имя для скрипта или команды. Для скрипта верхнего уровня это обычно имя скрипта, для команд ниже – имя команды.
  • 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 (MutableMapping[str, Command] | Sequence[Command] | None)
  • attrs (Any)
command(*args, **kwargs)

Это работает точно так же, как метод с таким же именем в обычном click.Group, но он оборачивает обратные вызовы в with_appcontext(), если это не отключено с помощью with_appcontext=False.

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

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

group(*args, **kwargs)

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

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

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

class flask.cli.ScriptInfo(app_import_path=None, create_app=None, set_debug_flag=True, load_dotenv_defaults=True)

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

Изменено в версии 3.1: Добавлен параметр и атрибут load_dotenv_defaults.

Параметры:
  • app_import_path (str | None)
  • create_app (t.Callable[..., Flask] | None)
  • set_debug_flag (bool)
  • load_dotenv_defaults (bool)
app_import_path

Необязательно, путь импорта приложения Flask.

create_app

Необязательно, функция, которая принимает script info для создания экземпляра приложения.

data: dict[t.Any, t.Any]

Словарь с произвольными данными, которые можно связать с этим script info.

load_dotenv_defaults

Нужно ли загрузить файлы по умолчанию .flaskenv и .env.

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

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

load_app()

Загружает приложение Flask (если оно еще не загружено) и возвращает его. Вызов этого метода несколько раз приведет только к возвращению уже загруженного приложения.

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

Flask

flask.cli.load_dotenv(path=None, load_defaults=True)

Загрузка файлов “dotenv” для установки переменных окружения. Указанный путь имеет приоритет перед .env, который имеет приоритет перед .flaskenv. После загрузки и объединения этих файлов, значения устанавливаются только если ключ еще не установлен в os.environ.

Это ничего не делает, если python-dotenv не установлен.

Параметры:
  • path (str | PathLike[str] | None) – Загрузить файл по этому пути.
  • load_defaults (bool) – Поиск и загрузка файлов по умолчанию .flaskenv и .env.
Возвращаемое значение:

True если по крайней мере одна переменная окружения была загружена.

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

bool

Изменено в версии 3.1: Добавлен параметр load_defaults. Указанный путь имеет приоритет перед файлами по умолчанию.

Изменения

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

Параметры:

f (F)

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

F

flask.cli.pass_script_info(f)

Помечает функцию таким образом, что экземпляр ScriptInfo передаётся в качестве первого аргумента вызову click.

Параметры:

f (t.Callable[te.Concatenate[T, P], R])

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

t.Callable[P, R]

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

© 2010 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/stable/api/

Spec-Zone.ru

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