Spec-Zone.ru › Werkzeug 3.0

Структуры данных

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

Общие цели

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

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

class werkzeug.datastructures.TypeConversionDict

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

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

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

get(key, default=None, type=None)

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

>>> d = TypeConversionDict(foo='42', bar='blub')
>>> d.get('foo', type=int)
42
>>> d.get('bar', -1, type=int)
-1
Параметры:
  • ключ – Ключ для поиска.
  • значение_по_умолчанию – Значение по умолчанию, которое будет возвращено, если ключ не найден. Если не указано иначе, возвращается None.
  • тип – Вызываемая функция, которая используется для приведения значения в MultiDict. Если вызываемая функция вызывает ValueError, возвращается значение по умолчанию.
class werkzeug.datastructures.ImmutableTypeConversionDict

Работает как TypeConversionDict, но не поддерживает модификации.

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

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

copy()

Возвращает поверхностную изменяемую копию этого объекта. Имейте в виду, что стандартная функция библиотеки copy() является бесполезной для этого класса, как и для любого другого неизменяемого типа Python (например: tuple).

class werkzeug.datastructures.MultiDict(mapping=None)

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

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

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

>>> d = MultiDict([('a', 'b'), ('a', 'c')])
>>> d
MultiDict([('a', 'b'), ('a', 'c')])
>>> d['a']
'b'
>>> d.getlist('a')
['b', 'c']
>>> 'a' in d
True

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

Начиная с Werkzeug 0.3, исключение KeyError, которое генерирует этот класс, также является подклассом исключения HTTP BadRequest, и, если оно перехвачено в общем обработчике для исключений HTTP, отобразит страницу для 400 BAD REQUEST.

Объект MultiDict может быть создан из итерируемого объекта (key, value) кортежей, словаря, MultiDict или, начиная с Werkzeug 0.2, из некоторых ключевых параметров.

Параметры:

mapping – начальное значение для MultiDict. Это может быть обычный словарь, итерируемый объект (key, value) кортежей или None.

add(key, value)

Добавляет новое значение для ключа.

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

В версии 0.6.

Параметры:
  • key – ключ для значения.
  • value – значение для добавления.
clear() → None. Remove all items from D.
copy()

Возвращает поверхностную копию этого объекта.

deepcopy(memo=None)

Возвращает глубокую копию этого объекта.

fromkeys(value=None, /)

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

get(key, default=None, type=None)

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

>>> d = TypeConversionDict(foo='42', bar='blub')
>>> d.get('foo', type=int)
42
>>> d.get('bar', -1, type=int)
-1
Параметры:
  • key – Ключ для поиска.
  • default – Значение по умолчанию, которое должно быть возвращено, если ключ не найден. Если не указано другое, возвращается None.
  • type – Вызываемый объект, используемый для преобразования значения в MultiDict. Если ValueError вызывается этим вызываемым объектом, возвращается значение по умолчанию.
getlist(key, type=None)

Возвращает список элементов для заданного ключа. Если этого ключа нет в MultiDict, возвращаемое значение будет пустым списком. Как и get, getlist принимает параметр type. Все элементы будут преобразованы с помощью указанного вызываемого объекта.

Параметры:
  • key – Ключ для поиска.
  • type – Вызываемый объект, используемый для преобразования значения в MultiDict. Если ValueError вызывается этим вызываемым объектом, значение будет удалено из списка.
Возвращает:

список list всех значений для ключа.

items(multi=False)

Возвращает итератор пар (key, value).

Параметры:

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

keys() → a set-like object providing a view on D's keys
lists()

Возвращает итератор пар (key, values), где values — список всех значений, связанных с ключом.

listvalues()

Возвращает итератор всех значений, связанных с ключом. Слияние keys() и это то же самое, что вызов lists():

>>> d = MultiDict({"foo": [1, 2, 3]})
>>> zip(d.keys(), d.listvalues()) == d.lists()
True
pop(key, default=no value)

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

>>> d = MultiDict({"foo": [1, 2, 3]})
>>> d.pop("foo")
1
>>> "foo" in d
False
Параметры:
  • key – ключ для извлечения.
  • default – если указано, значение, которое должно быть возвращено, если ключ отсутствует в словаре.
popitem()

Извлекает элемент из словаря.

popitemlist()

Извлекает (key, list) кортеж из словаря.

poplist(key)

Извлекает список для ключа из словаря. Если ключа нет в словаре, возвращается пустой список.

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

Изменено в версии 0.5: Если ключ больше не существует, возвращается список вместо повышения ошибки.

setdefault(key, default=None)

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

Параметры:
  • key – ключ для поиска.
  • default – значение по умолчанию, которое должно быть возвращено, если ключ отсутствует в словаре. Если не указано другое, это None.
setlist(key, new_list)

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

>>> d = MultiDict()
>>> d.setlist('foo', ['1', '2'])
>>> d['foo']
'1'
>>> d.getlist('foo')
['1', '2']
Параметры:
  • key – ключ, для которого устанавливаются значения.
  • new_list – итерируемый объект с новыми значениями для ключа. Сначала удаляются старые значения.
setlistdefault(key, default_list=None)

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

>>> d = MultiDict({"foo": 1})
>>> d.setlistdefault("foo").extend([2, 3])
>>> d.getlist("foo")
[1, 2, 3]
Параметры:
  • key – ключ для поиска.
  • default_list – итерируемый объект со значениями по умолчанию. Он либо копируется (если это был список), либо преобразуется в список перед возвратом.
Возвращает:

список list

to_dict(flat=True)

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

Параметры:

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

Возвращает:

словарь dict

update(mapping)

update() расширяет, а не заменяет существующие списки ключей:

>>> a = MultiDict({'x': 1})
>>> b = MultiDict({'x': 2, 'y': 3})
>>> a.update(b)
>>> a
MultiDict([('y', 3), ('x', 1), ('x', 2)])

Если список значений для ключа в other_dict пуст, новые значения не будут добавлены в словарь, и ключ не будет создан:

>>> x = {'empty_list': []}
>>> y = MultiDict()
>>> y.update(x)
>>> y
MultiDict([])
values()

Возвращает итератор первых значений в списке значений каждого ключа.

class werkzeug.datastructures.OrderedMultiDict(mapping=None)

Работает как обычный MultiDict, но сохраняет порядок полей. Для преобразования упорядоченного множественного словаря в список можно использовать метод items() и передать multi=True.

В целом, OrderedMultiDict на порядок медленнее, чем MultiDict.

примечание

Из-за ограничения в Python вы не можете преобразовать упорядоченный множественный словарь в обычный словарь, используя dict(multidict). Вместо этого необходимо использовать метод to_dict(), иначе внутренние объекты ведра будут доступны.

class werkzeug.datastructures.ImmutableMultiDict(mapping=None)

Неизменяемый MultiDict.

Изменения

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

copy()

Возвращает поверхностную изменяемую копию этого объекта. Имейте в виду, что стандартная функция copy() библиотеки Python является пустой операцией для этого класса, как и для любого другого неизменяемого типа Python (например, tuple).

class werkzeug.datastructures.ImmutableOrderedMultiDict(mapping=None)

Неизменяемый OrderedMultiDict.

Изменения

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

copy()

Возвращает поверхностную изменяемую копию этого объекта. Имейте в виду, что стандартная функция copy() библиотеки Python является пустой операцией для этого класса, как и для любого другого неизменяемого типа Python (например, tuple).

class werkzeug.datastructures.CombinedMultiDict(dicts=None)

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

>>> from werkzeug.datastructures import CombinedMultiDict, MultiDict
>>> post = MultiDict([('foo', 'bar')])
>>> get = MultiDict([('blub', 'blah')])
>>> combined = CombinedMultiDict([get, post])
>>> combined['foo']
'bar'
>>> combined['blub']
'blah'

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

Начиная с Werkzeug 0.3, исключение KeyError этого класса также является подклассом исключения BadRequest HTTP и отобразит страницу для 400 BAD REQUEST , если оно перехвачено в общем обработчике исключений HTTP.

class werkzeug.datastructures.ImmutableDict

Неизменяемый dict.

Изменения

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

copy()

Возвращает поверхностную изменяемую копию этого объекта. Имейте в виду, что стандартная функция copy() библиотеки Python является пустой операцией для этого класса, как и для любого другого неизменяемого типа Python (например, tuple).

class werkzeug.datastructures.ImmutableList(iterable=(), /)

Неизменяемый list.

Изменения

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

Приватный:
class werkzeug.datastructures.FileMultiDict(mapping=None)

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

Изменения

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

add_file(name, file, filename=None, content_type=None)

Добавляет новый файл в словарь. file может быть именем файла или объектом типа file или FileStorage.

Параметры:
  • name – имя поля.
  • file – имя файла или объект типа file
  • filename – необязательное имя файла
  • content_type – необязательный тип содержимого

HTTP-связанные

class werkzeug.datastructures.Headers([defaults])

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

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

Начиная с Werkzeug 0.3, KeyError исключение, генерируемое этим классом, также является подклассом BadRequest исключения HTTP и будет отображать страницу для 400 BAD REQUEST , если оно перехвачено в обработчике всех исключений HTTP.

Заголовки в основном совместимы с классом Python wsgiref.headers.Headers за исключением __getitem__. wsgiref вернёт None для headers['missing'], тогда как Headers вызовет KeyError.

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

Параметры:

defaults – Список значений по умолчанию для Headers.

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

Изменено в версии 2.1.0: Значения по умолчанию проверяются так же, как и добавляемые позже значения.

Изменено в версии 0.9: Эта структура данных теперь хранит значения Unicode аналогично тому, как это делают многослойные словари. Основное отличие состоит в том, что также можно задавать байты, которые будут автоматически декодированы с помощью latin1.

Изменено в версии 0.9: Функция linked() была удалена без замены, поскольку это был API, который не поддерживал изменения модели кодирования.

add(_key, _value, **kw)

Добавляет новую пару заголовок-значение в список.

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

>>> d = Headers()
>>> d.add('Content-Type', 'text/plain')
>>> d.add('Content-Disposition', 'attachment', filename='foo.png')

Сброс ключевых аргументов использует dump_options_header() за кулисами.

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

Добавлена в версии 0.4.1: ключевые аргументы были добавлены для совместимости с wsgiref.

add_header(_key, _value, **_kw)

Добавляет новую пару заголовок-значение в список.

Псевдоним для add() для совместимости с wsgiref методом add_header().

clear()

Очищает все заголовки.

extend(*args, **kwargs)

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

Чтобы заменить существующие ключи вместо расширения, используйте update().

Если указан, первый аргумент может быть другим Headers объектом, MultiDict, dict или итерируемым объектом пар.

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

Изменено в версии 1.0: Поддержка MultiDict. Разрешено передавать kwargs.

get(key, default=None, type=None)

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

>>> d = Headers([('Content-Length', '42')])
>>> d.get('Content-Length', type=int)
42
Параметры:
  • ключ – Ключ для поиска.
  • значение по умолчанию – Значение по умолчанию, которое будет возвращено, если ключ не найден. Если не указано явно, возвращается None.
  • тип – Вызываемая функция, используемая для приведения значения в Headers. Если данная вызываемая функция поднимет ValueError, будет возвращено значение по умолчанию.

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

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

Изменено в версии 0.9: Параметр as_bytes был добавлен.

get_all(name)

Возвращает список всех значений для указанного поля.

Этот метод совместим с wsgiref методом get_all().

getlist(key, type=None)

Возвращает список элементов для заданного ключа. Если этот ключ не существует в Headers, возвращается пустой список. Как и get(), getlist() принимает параметр type. Все элементы будут преобразованы с помощью вызываемой функции, определенной там.

Параметры:
  • ключ – Ключ для поиска.
  • тип – Вызываемая функция, используемая для приведения значения в Headers. Если данная вызываемая функция поднимет ValueError, значение будет удалено из списка.
Возвращает:

список list всех значений для ключа.

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

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

Изменено в версии 0.9: Параметр as_bytes был добавлен.

pop(key=None, default=no value)

Удаляет и возвращает ключ или индекс.

Параметры:

ключ – Ключ для удаления. Если это целое число, удаляется элемент в этой позиции, если это строка, удаляется значение для этого ключа. Если ключ опущен или None удаляется последний элемент.

Возвращает:

элемент.

popitem()

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

remove(key)

Удаляет ключ.

Параметры:

ключ – Удаляемый ключ.

END_OF_DOCUMENT_MARKER
set(_key, _value, **kw)

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

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

Изменения

Изменено в версии 0.6.1: set() теперь принимает те же аргументы, что и add().

Параметры:
  • key – Ключ для вставки.
  • value – Значение для вставки.
setdefault(key, default)

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

Параметры:
  • key – Ключ заголовка для получения.
  • default – Значение для установки ключа, если он не содержится в заголовках.
setlist(key, values)

Удаляет все существующие значения для заголовка и добавляет новые.

Параметры:
  • key – Ключ заголовка для установки.
  • values – Итерируемый набор значений для установки ключа.
Изменения

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

setlistdefault(key, default)

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

В отличие от MultiDict.setlistdefault(), изменение возвращаемого списка не повлияет на заголовки.

Параметры:
  • key – Ключ заголовка для получения.
  • default – Итерируемый набор значений для установки ключа, если он не содержится в заголовках.
Изменения

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

to_wsgi_list()

Преобразует заголовки в список, подходящий для WSGI.

Возвращает:

список

update(*args, **kwargs)

Заменяет заголовки в этом объекте элементами из другого объекта заголовков и ключевыми аргументами.

Для расширения существующих ключей вместо их замены используйте extend().

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

Изменения

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

class werkzeug.datastructures.EnvironHeaders(environ)

Только для чтения версия заголовков из среды WSGI. Предоставляет тот же интерфейс, что и Headers, и создается из среды WSGI. Начиная с Werkzeug 0.3, исключение KeyError, генерируемое этим классом, также является подклассом исключения HTTP BadRequest и отобразит страницу для 400 BAD REQUEST при перехвате в обработчике исключений HTTP.

class werkzeug.datastructures.HeaderSet(headers=None, on_update=None)

Аналогично классу ETags, он реализует структуру, похожую на множество. В отличие от ETags, эта структура не учитывает регистр и используется для заголовков vary, allow и content-language.

Если не используется функция parse_set_header(), создание работает так:

>>> hs = HeaderSet(['foo', 'bar', 'baz'])
>>> hs
HeaderSet(['foo', 'bar', 'baz'])
add(header)

Добавляет новый заголовок в множество.

as_set(preserve_casing=False)

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

Параметры:

preserve_casing – если установлено в True, элементы возвращаемого множества будут иметь исходный регистр, как в HeaderSet, в противном случае они будут в нижнем регистре.

clear()

Очищает множество.

discard(header)

Подобно remove(), но игнорирует ошибки.

Параметры:

header – заголовок для удаления.

find(header)

Возвращает индекс заголовка в множестве или -1, если заголовок не найден.

Параметры:

header – заголовок для поиска.

index(header)

Возвращает индекс заголовка в множестве или генерирует IndexError.

Параметры:

header – заголовок для поиска.

remove(header)

Удаляет заголовок из множества. Вызывает KeyError, если заголовок не найден в множестве.

Изменения

Изменено в версии 0.5: В более ранних версиях вместо IndexError генерировалось исключение KeyError, если объект отсутствовал.

Параметры:

header – заголовок для удаления.

to_header()

Преобразует множество заголовков в строку HTTP-заголовка.

update(iterable)

Добавляет все заголовки из итерируемого набора в множество.

Параметры:

iterable – обновляет множество элементами из итерируемого.

class werkzeug.datastructures.Accept(values=())

Объект Accept — это просто подкласс списка для списков кортежей (value, quality). Он автоматически сортируется по специфичности и качеству.

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

>>> a = CharsetAccept([('ISO-8859-1', 1), ('utf-8', 0.7)])
>>> a.best
'ISO-8859-1'
>>> 'iso-8859-1' in a
True
>>> 'UTF8' in a
True
>>> 'utf7' in a
False

Чтобы получить качество элемента, можно использовать обычный поиск по элементу:

>>> print a['utf-8']
0.7
>>> a['utf7']
0
Журнал изменений

Изменено в версии 1.0.0: Accept внутренние значения больше не упорядочиваются по алфавиту для тегов с одинаковым качеством. Вместо этого сохраняется исходный порядок.

Изменено в версии 0.5: Accept объекты теперь принудительно делают неизменяемыми.

property best

Лучшее соответствие как значение.

best_match(matches, default=None)

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

Параметры:
  • matches – список соответствий для проверки
  • default – значение, которое возвращается, если ничего не соответствует
find(key)

Получить позицию записи или вернуть -1.

Параметры:

key – Ключ для поиска.

index(key)

Получить позицию записи или вызвать ValueError.

Параметры:

key – Ключ для поиска.

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

Изменено в версии 0.5: Раньше это вызывало IndexError, что не соответствовало API списка.

quality(key)

Возвращает качество ключа.

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

Добавлена в версии 0.6: В предыдущих версиях вам нужно было использовать синтаксис поиска по элементам (например: obj[key] вместо obj.quality(key))

to_header()

Преобразовать набор заголовков в строку HTTP-заголовка.

values()

Итерироваться по всем значениям.

class werkzeug.datastructures.MIMEAccept(values=())

Как Accept, но с особыми методами и поведением для MIME-типов.

property accept_html

Истина, если этот объект принимает HTML.

property accept_json

Истина, если этот объект принимает JSON.

property accept_xhtml

Истина, если этот объект принимает XHTML.

class werkzeug.datastructures.CharsetAccept(values=())

Как Accept, но с нормализацией для кодировок.

class werkzeug.datastructures.LanguageAccept(values=())

Как Accept, но с нормализацией для тегов языка.

class werkzeug.datastructures.RequestCacheControl(values=(), on_update=None)

Управление кэшем для запросов. Это неизменяемо и предоставляет доступ ко всем заголовкам управления кэшем, относящимся к запросу.

Чтобы снова получить заголовок объекта RequestCacheControl, можно преобразовать объект в строку или вызвать метод to_header(). Если вы планируете его расширить и добавить свои собственные элементы, ознакомьтесь с исходным кодом этого класса.

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

Изменено в версии 2.1.0: Установка целочисленных свойств, таких как max_age, преобразует значение в целое число.

Добавлена в версии 0.5: В предыдущих версиях существовал класс CacheControl, который использовался как для запросов, так и для ответов.

no_cache

Доступ к «no-cache»

no_store

Доступ к «no-store»

max_age

Доступ к «max-age»

no_transform

Доступ к «no-transform»

property max_stale

Доступ к «max-stale»

property min_fresh

Доступ к «min-fresh»

property only_if_cached

Доступ к «only-if-cached»

class werkzeug.datastructures.ResponseCacheControl(values=(), on_update=None)

Управление кэшем для ответов. В отличие от RequestCacheControl, это изменяемо и предоставляет доступ к заголовкам управления кэшем, относящимся к ответу.

Чтобы снова получить заголовок объекта ResponseCacheControl, можно преобразовать объект в строку или вызвать метод to_header(). Если вы планируете его расширить и добавить свои собственные элементы, ознакомьтесь с исходным кодом этого класса.

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

Изменено в версии 2.1.1: s_maxage преобразует значение в целое число.

Изменено в версии 2.1.0: Установка целочисленных свойств, таких как max_age, преобразует значение в целое число.

Добавлена в версии 0.5: В предыдущих версиях существовал класс CacheControl, который использовался как для запросов, так и для ответов.

no_cache

Доступ к «no-cache»

no_store

Доступ к «no-store»

max_age

Доступ к «max-age»

no_transform

Доступ к «no-transform»

property immutable

Доступ к «immutable»

property must_revalidate

Доступ к «must-revalidate»

property private

Доступ к «private»

property proxy_revalidate

Доступ к «proxy-revalidate»

property public

Доступ к «public»

property s_maxage

Доступ к «s-maxage»

END_OF_DOCUMENT_MARKER
class werkzeug.datastructures.ETags(strong_etags=None, weak_etags=None, star_tag=False)

Множество, которое можно использовать для проверки наличия одного тега в коллекции тегов.

as_set(include_weak=False)

Преобразовать объект ETags в множество Python. По умолчанию все слабые теги не являются частью этого множества.

contains(etag)

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

contains_raw(etag)

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

contains_weak(etag)

Проверить, является ли тег частью множества, включая слабые и сильные теги.

is_strong(etag)

Проверить, является ли тег сильным.

is_weak(etag)

Проверить, является ли тег слабым.

to_header()

Преобразовать множество тегов в строку заголовка HTTP.

class werkzeug.datastructures.Authorization(auth_type, data=None, token=None)

Представляет части заголовка запроса Authorization.

Request.authorization возвращает экземпляр, если заголовок установлен.

Экземпляр можно использовать с тестом Client методами запроса auth для отправки заголовка в тестовых запросах.

В зависимости от схемы авторизации будет установлено либо parameters, либо token. Токен схемы Basic декодируется в параметры username и password.

Для удобства auth["key"] и auth.key оба обращаются к ключу в словаре parameters, а также auth.get("key") и "key" in auth.

Изменения

Изменено в версии 2.3: Параметр token и атрибут были добавлены для поддержки схем авторизации, использующих токен вместо параметров, таких как Bearer.

Изменено в версии 2.3: Объект больше не является dict.

Изменено в версии 0.5: Объект — это неизменяемый словарь.

Параметры:
  • auth_type (str) –
  • data (dict[str, str | None] | None) –
  • token (str | None) –
classmethod from_header(value)

Разбор значения заголовка Authorization и возврат экземпляра, или None если значение пустое.

Параметры:

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

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

те.Self | None

Изменения

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

parameters

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

to_header()

Произвести значение заголовка Authorization, представляющее эти данные.

Изменения

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

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

str

token

Токен, разобранный из заголовка. Либо он, либо parameters будут иметь значение для заданной схемы.

Изменения

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

type

Схема авторизации, например, basic, digest, или bearer.

END_OF_DOCUMENT_MARKER
class werkzeug.datastructures.WWWAuthenticate(auth_type, values=None, token=None)

Представляет части заголовка ответа WWW-Authenticate.

Установите Response.www_authenticate в экземпляр списка экземпляров, чтобы установить значения для этого заголовка в ответе. Изменение этого экземпляра изменит значение заголовка.

В зависимости от схемы аутентификации, должно быть установлено либо parameters, либо token. Схема Basic будет кодировать параметры username и password в токен.

Для удобства, auth["key"] и auth.key работают с parameters словарем, и могут использоваться для получения, установки или удаления параметров. Также доступны auth.get("key") и "key" in auth.

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

Изменено в версии 2.3: Добавлен параметр и атрибут token для поддержки схем аутентификации, использующих токен вместо параметров, таких как Bearer.

Изменено в версии 2.3: Объект больше не является dict.

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

Параметры:
  • auth_type (str) –
  • values (dict[str, str | None] | None) –
  • token (str | None) –
classmethod from_header(value)

Разбирает значение заголовка WWW-Authenticate и возвращает экземпляр, или None если значение пустое.

Параметры:

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

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

te.Self | None

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

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

property parameters: dict[str, str | None]

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

to_header()

Создаёт значение заголовка WWW-Authenticate, представляющее эти данные.

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

str

property token: str | None

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

property type: str

Схема авторизации, например basic, digest, или bearer.

class werkzeug.datastructures.IfRange(etag=None, date=None)

Очень простой объект, представляющий заголовок If-Range в проанализированном виде. У него или нет тега и даты, или есть один из них, но никогда не оба.

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

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

date

Дата в проанализированном формате или None.

etag

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

to_header()

Преобразует объект обратно в заголовок HTTP.

class werkzeug.datastructures.Range(units, ranges)

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

Исключения:

ValueError – Если указанные диапазоны недопустимы.

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

Изменено в версии 0.15: Проверяются диапазоны, переданные в качестве аргументов.

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

make_content_range(length)

Создаёт объект ContentRange из текущего диапазона и заданной длины содержимого.

range_for_length(length)

Если диапазон предназначен для байтов, длина не равна None, имеется ровно один диапазон и он удовлетворяет условиям, возвращает кортеж (start, stop), иначе None.

ranges

Список кортежей (begin, end) для заголовка диапазона, предоставленного в качестве аргумента. Диапазоны не включают конечные значения.

to_content_range_header(length)

Преобразует объект в заголовок HTTP Content-Range, на основе заданной длины.

to_header()

Преобразует объект обратно в заголовок HTTP.

units

Единицы этого диапазона. Обычно «байты».

class werkzeug.datastructures.ContentRange(units, start, stop, length=None, on_update=None)

Представляет заголовок content-range.

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

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

property length

Длина диапазона или None.

set(start, stop, length=None, units='bytes')

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

property start

Начальная точка диапазона или None.

property stop

Конечная точка диапазона (не включается) или None. Может быть только None если также start равен None.

property units

Используемые единицы, обычно «байты».

unset()

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

END_OF_DOCUMENT_MARKER

Другие

class werkzeug.datastructures.FileStorage(stream=None, filename=None, name=None, content_type=None, content_length=None, headers=None)

Класс FileStorage — это тонкий оболочка над входными файлами. Он используется объектом запроса для представления загруженных файлов. Все атрибуты потока оболочки проксируются хранилищем файлов, поэтому можно использовать storage.read() вместо длинной записи storage.stream.read().

stream

Поток ввода загруженного файла. Обычно указывает на открытый временный файл.

filename

Имя файла на стороне клиента. Может быть str, или экземпляром os.PathLike.

name

Имя поля формы.

headers

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

Changelog

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

close()

Закрыть базовый файл, если это возможно.

property content_length

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

property content_type

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

property mimetype

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

Changelog

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

property mimetype_params

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

Changelog

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

save(dst, buffer_size=16384)

Сохранить файл в указанный путь или объект файла. Если местом назначения является объект файла, вы должны закрыть его самостоятельно после вызова. Размер буфера — количество байтов, хранящихся в памяти во время процесса копирования. По умолчанию 16 КБ.

Для безопасного сохранения файлов см. также secure_filename().

Параметры:
  • dst — имя файла, os.PathLike, или открытый объект файла для записи.
  • buffer_size — Передаётся как параметр length в shutil.copyfileobj().
Changelog

Изменено в версии 1.0: Поддерживает pathlib.

© 2007 Pallets
Licensed under the BSD 3-clause License.
https://werkzeug.palletsprojects.com/en/3.0.x/datastructures/

Spec-Zone.ru

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