Spec-Zone.ru › Werkzeug 2.3

Утилиты HTTP

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

Функции работы со временем

Эти функции упрощают работу со временем в контексте HTTP. Werkzeug генерирует объекты datetime с учетом часового пояса в UTC. При передаче объектов datetime в Werkzeug, предполагается, что любой неявный объект datetime находится в UTC.

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

  • dt = datetime.now(timezone.utc) получает текущее время в UTC.
  • dt = datetime(..., tzinfo=timezone.utc) создает время в UTC.
  • dt = dt.replace(tzinfo=timezone.utc) делает неявный объект явным, предполагая, что он находится в UTC.
  • dt = dt.replace(tzinfo=None) делает явный объект неявным.
werkzeug.http.parse_date(value)

Разбирает дату в формате RFC 2822 в объект timezone-aware datetime.datetime или None в случае неудачи.

Это обертка для email.utils.parsedate_to_datetime(). Возвращает None в случае неудачи, вместо возбуждения исключения, и всегда возвращает объект datetime с учетом часового пояса. Если в строке нет информации о часовом поясе, предполагается, что это UTC.

Параметры:

value (str | None) – Строка с поддерживаемым форматом даты.

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

datetime | None

Изменения

Изменено в версии 2.0: Возвращает объект datetime с учетом часового пояса. Используйте email.utils.parsedate_to_datetime.

werkzeug.http.http_date(timestamp=None)

Форматирует объект datetime или временную метку в строку даты в формате RFC 2822.

Это обертка для email.utils.format_datetime(). Предполагается, что неявные объекты datetime находятся в UTC, вместо возбуждения исключения.

Параметры:

timestamp (datetime | date | int | float | struct_time | None) – Объект datetime или временная метка для форматирования. По умолчанию используется текущее время.

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

str

Изменения

Изменено в версии 2.0: Используйте email.utils.format_datetime. Принимайте объекты date.

END_OF_DOCUMENT_MARKER

Парсинг заголовков

Следующие функции могут быть использованы для парсинга входящих HTTP-заголовков. Поскольку Python не предоставляет структуры данных с семантикой, необходимой RFC 2616, Werkzeug реализует некоторые пользовательские структуры данных, которые документированы отдельно.

werkzeug.http.parse_options_header(value)

Разбирает заголовок, состоящий из значения с key=value параметрами, разделенными точками с запятой ;. Например, заголовок Content-Type.

parse_options_header("text/html; charset=UTF-8")
('text/html', {'charset': 'UTF-8'})

parse_options_header("")
("", {})

Это обратная функция dump_options_header().

Парсит допустимые части параметров, как описано в RFC 9110. Недопустимые части пропускаются.

Обрабатывает продолжения и кодировки символов, как описано в RFC 2231, хотя и не так строго, как в RFC. Принимаются только кодировки ASCII, UTF-8 и ISO-8859-1, в противном случае значение остается в кавычках.

Клиенты могут быть не согласованны в том, как они обрабатывают символ кавычки внутри значения в кавычках. Стандарт HTML заменяет его на %22 в данных multipart-формы. RFC 9110 использует обратные слэши для экранирования в HTTP-заголовках. Оба декодируются в символ ".

Клиенты могут не согласовываться в том, как обрабатывать не-ASCII символы. HTML-документы должны объявлять <meta charset=UTF-8>, в противном случае браузеры могут заменить их ссылками на HTML-символы, которые можно декодировать, используя html.unescape().

Параметры:

value (str | None) – Значение заголовка для парсинга.

Возвращает:

(value, options), где options — это словарь.

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

tuple[str, dict[str, str]]

Изменено в версии 2.3: Недопустимые части, такие как ключи без значения, ключи в кавычках и неправильно обрамлённые значения, отбрасываются вместо того, чтобы рассматриваться как None.

Изменено в версии 2.3: Для значений charset принимаются только ASCII, UTF-8 и ISO-8859-1.

Изменено в версии 2.3: Обрабатываются экранированные кавычки в значениях в кавычках, такие как %22 и \".

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

Изменено в версии 2.2: Имена параметров всегда преобразуются в нижний регистр.

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

Изменено в версии 0.15: Обрабатываются продолжения параметров RFC 2231.

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

werkzeug.http.parse_set_header(value, on_update=None)

Разбирает заголовок типа «множество» и возвращает объект HeaderSet:

>>> hs = parse_set_header('token, "quoted value"')

Возвращаемое значение — объект, который обрабатывает элементы без учета регистра и сохраняет порядок элементов:

>>> 'TOKEN' in hs
True
>>> hs.index('quoted value')
1
>>> hs
HeaderSet(['token', 'quoted value'])

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

Параметры:
  • value (str | None) – заголовок типа «множество» для парсинга.
  • on_update (Callable[[HeaderSet], None] | None) – необязательная функция, которая вызывается каждый раз, когда значение в объекте HeaderSet изменяется.
Возвращает:

объект HeaderSet

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

HeaderSet

werkzeug.http.parse_list_header(value)

Разбирает значение заголовка, состоящего из списка элементов, разделенных запятыми, согласно RFC 9110.

Расширяет urllib.request.parse_http_list() для удаления окружающих кавычек из значений.

parse_list_header('token, "quoted value"')
['token', 'quoted value']

Это обратная функция dump_header().

Параметры:

value (str) – Значение заголовка для парсинга.

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

list[str]

werkzeug.http.parse_dict_header(value, cls=None)

Разбирает заголовок списка с помощью parse_list_header(), затем разбирает каждый элемент как пару «ключ-значение».

parse_dict_header('a=b, c="d, e", f')
{"a": "b", "c": "d, e", "f": None}

Это обратная функция dump_header().

Если ключ не имеет значения, он None.

Обрабатывает кодировки символов для значений, как описано в RFC 2231. Принимаются только кодировки ASCII, UTF-8 и ISO-8859-1, в противном случае значение остается в кавычках.

Параметры:
  • value (str) – Значение заголовка для парсинга.
  • cls (type[dict] | None) –
Тип возвращаемого значения:

dict[str, str]

Изменено в версии 2.3: Добавлена поддержка элементов, закодированных в key*=charset''value.

Изменено в версии 2.3: Передача байтов устарела, поддержка будет удалена в Werkzeug 3.0.

Изменено в версии 2.3: Аргумент cls устарел и будет удален в Werkzeug 3.0.

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

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

werkzeug.http.parse_accept_header(value: str | None) → Accept
werkzeug.http.parse_accept_header(value:str|None, cls:type[_TAnyAccept]) → _TAnyAccept

Разбор заголовка Accept в соответствии с RFC 9110.

Возвращает экземпляр Accept, который может сортировать и проверять элементы на основе их параметра качества. При разборе Accept-Charset, Accept-Encoding, или Accept-Language, используйте соответствующий подкласс Accept.

Параметры:
  • value – Значение заголовка для разбора.
  • cls – Класс Accept для обертывания результата.
Возвращает:

Экземпляр cls.

Изменено в версии 2.3: Разбор в соответствии с RFC 9110. Элементы с недопустимыми значениями q пропускаются.

werkzeug.http.parse_cache_control_header(value: str | None, on_update: Callable[[_TAnyCC], None] | None, cls: None = None) → RequestCacheControl
werkzeug.http.parse_cache_control_header(value:str|None, on_update:Callable[[_TAnyCC],None]|None, cls:type[_TAnyCC]) → _TAnyCC

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

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

Добавлена в версии 0.5: Добавлен cls . Если не указано иное, возвращается неизменяемый RequestCacheControl.

Параметры:
  • value – заголовок управления кэшем для разбора.
  • on_update – необязательный вызываемый объект, который вызывается каждый раз, когда значение объекта CacheControl изменяется.
  • cls – класс для возвращаемого объекта. По умолчанию используется RequestCacheControl.
Возвращает:

объект cls.

werkzeug.http.parse_authorization_header(value)

Разбор HTTP-заголовка авторизации basic/digest, передаваемого веб-браузером. Возвращаемое значение — None если заголовок недопустим или отсутствует, в противном случае — объект Authorization.

Параметры:

value (str | None) – заголовок авторизации для разбора.

Возвращает:

объект Authorization или None.

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

Authorization | None

Устарело начиная с версии 2.3: Будет удалено в Werkzeug 3.0. Используйте Authorization.from_header() вместо этого.

werkzeug.http.parse_www_authenticate_header(value, on_update=None)

Разбор заголовка HTTP WWW-Authenticate в объект WWWAuthenticate.

Параметры:
  • value (str | None) – заголовок WWW-Authenticate для разбора.
  • on_update (Callable[[WWWAuthenticate], None] | None) – необязательный вызываемый объект, который вызывается каждый раз, когда значение объекта WWWAuthenticate изменяется.
Возвращает:

объект WWWAuthenticate.

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

WWWAuthenticate

Устарело начиная с версии 2.3: Будет удалено в Werkzeug 3.0. Используйте WWWAuthenticate.from_header() вместо этого.

werkzeug.http.parse_if_range_header(value)

Разбирает заголовок if-range, который может быть тегом ETag или датой. Возвращает объект IfRange.

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

Изменено в версии 2.0: Если значение представляет дату, оно учитывает часовой пояс.

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

Параметры:

value (str | None) –

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

IfRange

werkzeug.http.parse_range_header(value, make_inclusive=True)

Разбирает заголовок диапазона в объект Range. Если заголовок отсутствует или имеет неправильный формат, возвращается None. ranges — это список (start, stop) кортежей, где диапазоны не включают граничные значения.

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

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

Параметры:
  • value (str | None) –
  • make_inclusive (bool) –
Тип возвращаемого значения:

Диапазон | None

werkzeug.http.parse_content_range_header(value, on_update=None)

Разбирает заголовок диапазона в объект ContentRange или None, если разбор невозможен.

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

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

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

ContentRange | None

Утилиты заголовков

Следующие утилиты работают хорошо с HTTP-заголовками, но не анализируют их. Они полезны, если вы работаете с условными ответами или если хотите проксировать произвольные запросы, но хотите удалить неподдерживаемые WSGI заголовки «hop-by-hop». Также есть функция для создания строк HTTP-заголовков из проанализированных данных.

werkzeug.http.is_entity_header(header)

Проверка, является ли заголовок заголовком сущности.

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

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

Параметры:

header (str) – заголовок для проверки.

Возвращает:

True если это заголовок сущности, False в противном случае.

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

bool

werkzeug.http.is_hop_by_hop_header(header)

Проверка, является ли заголовок заголовком «Hop-by-Hop» HTTP/1.1.

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

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

Параметры:

header (str) – заголовок для проверки.

Возвращает:

True если это заголовок «Hop-by-Hop» HTTP/1.1, False в противном случае.

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

bool

werkzeug.http.remove_entity_headers(headers, allowed=('expires', 'content-location'))

Удаление всех заголовков сущностей из списка или Headers объекта. Эта операция выполняется на месте. Expires и Content-Location заголовки по умолчанию не удаляются. Причина в этом заключается в RFC 2616 разделе 10.3.5, который определяет некоторые заголовки сущностей, которые должны быть отправлены.

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

Изменено в версии 0.5: добавлено allowed параметр.

Параметры:
  • headers (Headers | list[tuple[str, str]]) – список или Headers объект.
  • allowed (Iterable[str]) – список заголовков, которые все равно должны быть разрешены, даже если они являются заголовками сущностей.
Тип возвращаемого значения:

None

werkzeug.http.remove_hop_by_hop_headers(headers)

Удаление всех заголовков «Hop-by-Hop» HTTP/1.1 из списка или Headers объекта. Эта операция выполняется на месте.

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

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

Параметры:

headers (Headers | list[tuple[str, str]]) – список или Headers объект.

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

None

werkzeug.http.is_byte_range_valid(start, stop, length)

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

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

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

Параметры:
  • start (int | None) –
  • stop (int | None) –
  • length (int | None) –
Тип возвращаемого значения:

bool

werkzeug.http.quote_header_value(value, extra_chars=None, allow_token=True)

Добавление двойных кавычек вокруг значения заголовка. Если заголовок содержит только символы ASCII-токенов, он будет возвращен без изменений. Если заголовок содержит " или \ символы, они будут экранированы с помощью дополнительного \ символа.

Это обратное действие для unquote_header_value().

Параметры:
  • value (Any) – Значение для присвоения кавычек. Будет преобразовано в строку.
  • allow_token (bool) – Отключить присвоение кавычек даже если значение содержит только символы токенов.
  • extra_chars (str | None) –
Тип возвращаемого значения:

str

Изменено в версии 2.3: Значение присваивается в кавычки, если это пустая строка.

Изменено в версии 2.3: Передача байтов устарела и не будет поддерживаться в Werkzeug 3.0.

Изменено в версии 2.3: Параметр extra_chars устарел и будет удален в Werkzeug 3.0.

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

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

werkzeug.http.unquote_header_value(value, is_filename=None)

Удаление двойных кавычек и декодирование экранированных косыми чертами " и \ символов в значении заголовка.

Это обратное действие для quote_header_value().

Параметры:
  • value (str) – значение заголовка для снятия кавычек.
  • is_filename (bool | None) –
Тип возвращаемого значения:

str

Изменено в версии 2.3: Параметр is_filename устарел и будет удален в Werkzeug 3.0.

werkzeug.http.dump_header(iterable, allow_token=None)

Создать значение заголовка из списка элементов или пар «ключ-значение», разделённых запятыми ,.

Это обратное преобразование к parse_list_header(), parse_dict_header() и parse_set_header().

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

Если значение является None, ключ выводится отдельно.

В некоторых ключах для некоторых заголовков значение UTF-8 может быть закодировано с помощью специального key*=UTF-8''value формата, где value кодируется в процентах. Эта функция не будет автоматически генерировать этот формат, но если заданный ключ оканчивается на звёздочку *, значение предполагается в этом формате и не будет взято в кавычки.

dump_header(["foo", "bar baz"])
'foo, "bar baz"'

dump_header({"foo": "bar baz"})
'foo="bar baz"'
Параметры:
  • iterable (dict[str, Any] | Iterable[Any]) – Элементы для создания заголовка.
  • allow_token (bool | None) –
Тип возвращаемого значения:

str

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

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

Изменено в версии 2.2.3: Если ключ оканчивается на *, его значение не будет взято в кавычки.

Куки

werkzeug.http.parse_cookie(header, charset=None, errors=None, cls=None)

Разбор куки из строки или WSGI окружения.

Один и тот же ключ может быть предоставлен несколько раз, значения хранятся в порядке следования. По умолчанию MultiDict будет содержать первое значение, а все значения можно получить с помощью MultiDict.getlist().

Параметры:
  • header (WSGIEnvironment | str | None) – Заголовок куки в виде строки или словарь WSGI окружения с ключом HTTP_COOKIE.
  • cls (type[ds.MultiDict] | None) – Класс типа словаря для хранения парсированных куки. По умолчанию MultiDict.
  • charset (str | None) –
  • errors (str | None) –
Тип возвращаемого значения:

ds.MultiDict[str, str]

Изменено в версии 2.3: Передача байтов и параметры charset и errors устарели и будут удалены в Werkzeug 3.0.

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

Изменено в версии 1.0: Возвращает MultiDict вместо TypeConversionDict.

Изменено в версии 0.5: Возвращает TypeConversionDict вместо обычного словаря. Добавлен параметр cls.

werkzeug.http.dump_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=False, httponly=False, charset=None, sync_expires=True, max_size=4093, samesite=None)

Генерация заголовка Set-Cookie без префикса Set-Cookie.

Значение обычно ограничено ASCII, поскольку подавляющее большинство значений правильно экранированы, но это не гарантия. Оно проходит через latin1, как требуется PEP 3333.

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

Параметры:
  • max_age (timedelta | int | None) – должно быть числом секунд или None (по умолчанию), если куки должна существовать только во время сеанса браузера. Также принимаются объекты timedelta.
  • expires (str | datetime | int | float | None) – должен быть объектом datetime или меткой времени Unix.
  • path (str | None) – ограничение куки заданным путем, по умолчанию охватывает весь домен.
  • domain (str | None) – Используйте это, если хотите установить куки для разных доменов. Например, domain="example.com" установит куки, доступную для домена www.example.com, foo.example.com и т.д. В противном случае куки будет доступна только для домена, который ее установил.
  • secure (bool) – Куки будет доступна только через HTTPS.
  • httponly (bool) – запрещает JavaScript доступ к куки. Это расширение стандарта куки и, возможно, не поддерживается всеми браузерами.
  • charset (str | None) – кодировка для строковых значений.
  • sync_expires (bool) – автоматически устанавливает expires, если max_age определен, но expires нет.
  • max_size (int) – Выводит предупреждение, если конечное значение заголовка превысит этот размер. По умолчанию 4093, что должно быть безопасно поддерживается большинством браузеров. Установите в 0, чтобы отключить эту проверку.
  • samesite (str | None) – Ограничивает область действия куки таким образом, что она будет прикреплена только к запросам, если эти запросы являются запросами с одного сайта.
  • key (str) –
  • value (str) –
Тип возвращаемого значения:

str

Изменено в версии 2.3.3: Параметр path по умолчанию /.

Изменено в версии 2.3.1: Значение позволяет использовать больше символов без кавычек.

Изменено в версии 2.3: Допускаются значения localhost и другие имена без точки для домена. Ведущая точка игнорируется.

Изменено в версии 2.3: Параметр path по умолчанию None.

Изменено в версии 2.3: Передача байтов и параметр charset устарели и будут удалены в Werkzeug 3.0.

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

Изменено в версии 1.0.0: Строка 'None' принимается для samesite.

Справочные данные для условных ответов

Для условных ответов могут быть полезны следующие функции:

werkzeug.http.parse_etags(value)

Разбор заголовка etag.

Параметры:

value (str | None) – заголовок тега для разбора

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

объект ETags.

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

ETags

werkzeug.http.quote_etag(etag, weak=False)

Приведение тега etag в кавычки.

Параметры:
  • etag (str) – тег etag для приведения в кавычки.
  • weak (bool) – установить в True для обозначения «слабого» тега.
Тип возвращаемого значения:

str

werkzeug.http.unquote_etag(etag)

Извлечение значения одиночного тега etag:

>>> unquote_etag('W/"bar"')
('bar', True)
>>> unquote_etag('"bar"')
('bar', False)
Параметры:

etag (str | None) – идентификатор тега etag для извлечения значения.

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

кортеж (etag, weak).

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

tuple[str, bool] | tuple[None, None]

werkzeug.http.generate_etag(data)

Генерация тега etag для некоторых данных.

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

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

Параметры:

data (bytes) –

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

str

werkzeug.http.is_resource_modified(environ, etag=None, data=None, last_modified=None, ignore_if_range=True)

Удобный метод для условных запросов.

Параметры:
  • environ (WSGIEnvironment) – окружение WSGI запроса для проверки.
  • etag (str | None) – тег etag для ответа для сравнения.
  • data (bytes | None) – или, как альтернатива, данные ответа для автоматической генерации тега etag с помощью generate_etag().
  • last_modified (datetime | str | None) – необязательная дата последнего изменения.
  • ignore_if_range (bool) – Если False, заголовок If-Range будет принят во внимание.
Возвращаемое значение:

True если ресурс был изменён, в противном случае False.

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

bool

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

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

Изменено в версии 1.0.0: Проверка выполняется для методов, отличных от GET и HEAD.

Константы

werkzeug.http.HTTP_STATUS_CODES

Словарь пар «код состояния» -> «сообщение состояния по умолчанию». Используется обёртками и другими местами в Werkzeug, где целое число кода состояния расшифровывается в строку.

Парсинг данных формы

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

В настоящее время парсер данных формы поддерживает следующие форматы:

  • application/x-www-form-urlencoded
  • multipart/form-data

Вложенный multipart в настоящее время не поддерживается (Werkzeug 0.9), но не используется ни одним из современных веб-браузеров.

Пример использования:

>>> from io import BytesIO
>>> from werkzeug.formparser import parse_form_data
>>> data = (
...     b'--foo\r\nContent-Disposition: form-data; name="test"\r\n'
...     b"\r\nHello World!\r\n--foo--"
... )
>>> environ = {
...     "wsgi.input": BytesIO(data),
...     "CONTENT_LENGTH": str(len(data)),
...     "CONTENT_TYPE": "multipart/form-data; boundary=foo",
...     "REQUEST_METHOD": "POST",
... }
>>> stream, form, files = parse_form_data(environ)
>>> stream.read()
b''
>>> form['test']
'Hello World!'
>>> not files
True

Обычно среда WSGI предоставляется шлюзом WSGI с поступающими данными как частью среды. Если вы хотите сгенерировать такие поддельные среды WSGI для тестирования в среде разработки, вы можете использовать функцию create_environ() или EnvironBuilder.

class werkzeug.formparser.FormDataParser(stream_factory=None, charset=None, errors=None, max_form_memory_size=None, max_content_length=None, cls=None, silent=True, *, max_form_parts=None)

Этот класс реализует парсинг данных формы для Werkzeug. Сам по себе он может парсить данные формы в формате multipart и url-encoded. Его можно наследоваться и расширять, но для большинства MIME-типов лучше использовать нетронутый поток и экспонировать его как отдельные атрибуты в объекте запроса.

Параметры:
  • stream_factory (TStreamFactory | None) – Необязательное вызываемое значение, которое возвращает новый читаемый и записываемый дескриптор файла. Это вызываемое значение работает так же, как Response._get_file_stream().
  • max_form_memory_size (int | None) – максимальное количество байтов, принимаемое для хранения данных формы в памяти. Если данные превышают указанное значение, возникает исключение RequestEntityTooLarge.
  • max_content_length (int | None) – Если это значение указано, а переданные данные длиннее этого значения, возникает исключение RequestEntityTooLarge.
  • cls (type[MultiDict] | None) – необязательный класс словаря для использования. Если это значение не указано или None используется значение по умолчанию MultiDict.
  • silent (bool) – Если значение установлено в False, ошибки парсинга не будут перехвачены.
  • max_form_parts (int | None) – Максимальное количество частей multipart, подлежащих парсингу. Если это значение превышено, возникает исключение RequestEntityTooLarge.
  • charset (str | None) –
  • errors (str | None) –

Изменено в версии 2.3: Параметры charset и errors устарели и будут удалены в Werkzeug 3.0.

Изменено в версии 2.3: Атрибут parse_functions и методы get_parse_func устарели и будут удалены в Werkzeug 3.0.

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

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

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

werkzeug.formparser.parse_form_data(environ, stream_factory=None, charset=None, errors=None, max_form_memory_size=None, max_content_length=None, cls=None, silent=True, *, max_form_parts=None)

Обработайте данные формы в environ и верните их в виде кортежа в форме (stream, form, files). Вы должны вызывать этот метод только если метод транспорта POST, PUT, или PATCH.

Если MIME-тип переданных данных multipart/form-data, многослойный словарь файлов будет заполнен объектами FileStorage. Если MIME-тип неизвестен, входной поток обертывается и возвращается в качестве первого аргумента, в противном случае поток пустой.

Это сокращение для общего использования FormDataParser.

Параметры:
  • environ (WSGIEnvironment) – среда WSGI, используемая для парсинга.
  • stream_factory (TStreamFactory | None) – Необязательное вызываемое значение, которое возвращает новый читаемый и записываемый дескриптор файла. Это вызываемое значение работает так же, как Response._get_file_stream().
  • max_form_memory_size (int | None) – максимальное количество байтов, принимаемое для хранения данных формы в памяти. Если данные превышают указанное значение, возникает исключение RequestEntityTooLarge.
  • max_content_length (int | None) – Если это значение указано, а переданные данные длиннее этого значения, возникает исключение RequestEntityTooLarge.
  • cls (type[MultiDict] | None) – необязательный класс словаря для использования. Если это значение не указано или None используется значение по умолчанию MultiDict.
  • silent (bool) – Если значение установлено в False, ошибки парсинга не будут перехвачены.
  • max_form_parts (int | None) – Максимальное количество частей multipart, подлежащих парсингу. Если это значение превышено, возникает исключение RequestEntityTooLarge.
  • charset (str | None) –
  • errors (str | None) –
Возвращает:

Кортеж в форме (stream, form, files).

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

t_parse_result

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

Изменено в версии 2.3: Параметры charset и errors устарели и будут удалены в Werkzeug 3.0.

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

Введено в версии 0.5.1: Добавлен параметр silent.

Введено в версии 0.5: Добавлены параметры max_form_memory_size, max_content_length, и cls.

© 2007–2022 Pallets
Licensed under the BSD 3-clause License.
https://werkzeug.palletsprojects.com/en/2.3.x/http/

Spec-Zone.ru

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