Spec-Zone.ru › Werkzeug 2.2

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

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

Общие цели

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

Изменено в версии 0.6: Теперь классы общего назначения могут быть сериализованы в каждом протоколе, если сериализуемы содержащиеся объекты. Это означает, что 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()

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

class werkzeug.datastructures.MultiDict(mapping=None)
END_OF_DOCUMENT_MARKER

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 и отобразит страницу для 400 BAD REQUEST, если его перехватить в обработчике исключений HTTP.

Объект 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 (например, tuple).

class werkzeug.datastructures.ImmutableOrderedMultiDict(mapping=None)

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

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

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

copy()

Возвращает поверхностную изменяемую копию этого объекта. Имейте в виду, что стандартная функция библиотеки copy() для этого класса является бесполезной операцией, как и для любого другого неизменяемого типа 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 (например, 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, as_bytes=False)

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

>>> d = Headers([('Content-Length', '42')])
>>> d.get('Content-Length', type=int)
42
Журнал изменений

Добавлена в версии 0.9: Добавлена поддержка as_bytes.

Параметры:
  • key – Ключ для поиска.
  • default – Значение по умолчанию, которое будет возвращено, если ключ не найден. Если не указано, возвращается None.
  • type – Вызываемая функция, используемая для преобразования значения в Headers. Если функция возбудит ValueError, возвращается значение по умолчанию.
  • as_bytes – возвратить байты вместо строк.
get_all(name)

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

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

getlist(key, type=None, as_bytes=False)

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

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

Добавлена в версии 0.9: Добавлена поддержка as_bytes.

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

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

pop(key=None, default=no value)

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

Параметры:

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

Возвращает:

Элемент.

popitem()

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

remove(key)

Удаление ключа.

Параметры:

key – Ключ для удаления.

END_OF_DOCUMENT_MARKER
set(_key, _value, **kw)

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

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

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

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

Параметры:
  • ключ – Ключ, который нужно вставить.
  • значение – Значение, которое нужно вставить.
setdefault(key, default)

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

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

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

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

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

setlistdefault(key, default)

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

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

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

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

Параметры:

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

clear()

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

discard(header)

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

Параметры:

заголовок – заголовок, который нужно отбросить.

find(header)

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

Параметры:

заголовок – заголовок, который нужно найти.

index(header)

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

Параметры:

заголовок – заголовок, который нужно найти.

remove(header)

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

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

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

Параметры:

заголовок – заголовок, который нужно удалить.

to_header()

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

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

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

property accept_json

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

property accept_xhtml

True, если этот объект принимает 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»

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

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

as_set(include_weak=False)

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

contains(etag)

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

contains_raw(etag)

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

contains_weak(etag)

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

is_strong(etag)

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

is_weak(etag)

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

to_header()

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

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

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

Возвращается функцией parse_authorization_header(). Может быть полезно создать объект вручную, чтобы передать его в тестовый клиент Client.

Изменения

Изменено в версии 0.5: Этот объект стал неизменяемым.

property cnonce

Если сервер отправил заголовок qop в заголовке WWW-Authenticate, клиент должен предоставить это значение для аутентификации HTTP digest. Для получения дополнительной информации см. RFC.

property nc

Значение счетчика nonce, переданное клиентом, если также передается заголовок qop. Только для аутентификации HTTP digest.

property nonce

Nonce, отправленный сервером для аутентификации digest, отправленный обратно клиентом. Nonce должен быть уникальным для каждого ответа 401 для аутентификации HTTP digest.

property opaque

Заголовок opaque от сервера, возвращенный клиентом без изменений. Рекомендуется, чтобы эта строка была данными в base64 или шестнадцатеричном формате. Только для аутентификации digest.

property password

Если тип аутентификации basic, это пароль, переданный клиентом, иначе None.

property qop

Указывает, какое «качество защиты» применил клиент к сообщению для аутентификации HTTP digest. Обратите внимание, что это один токен, а не процитированный список альтернатив, как в WWW-Authenticate.

property realm

Это область сервера, отправленная обратно для аутентификации HTTP digest.

property response

Строка из 32 шестнадцатеричных цифр, вычисленная в соответствии с RFC 2617, которая доказывает, что пользователь знает пароль. Только для аутентификации digest.

to_header()

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

Изменения

Добавлена в версии 2.0: Добавлена для поддержки передачи аутентификации в тестовый клиент.

property uri

URI из Request-URI строки запроса; дублируется, потому что прокси могут изменять Request-Line в процессе передачи. Только для аутентификации HTTP digest.

property username

Переданное имя пользователя. Устанавливается всегда для аутентификации basic и digest.

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

Предоставляет простой доступ к заголовкам WWW-Authenticate.

property algorithm

Строка, указывающая пару алгоритмов, используемых для создания дайджеста и контрольной суммы. Если она отсутствует, предполагается «MD5». Если алгоритм не распознаётся, запрос следует проигнорировать (и использовать другой, если их несколько).

static auth_property(name, doc=None)

Статическая вспомогательная функция для подклассов Authentication, добавляющая дополнительные свойства системы аутентификации в класс:

class FooAuthenticate(WWWAuthenticate):
    special_realm = auth_property('special_realm')

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

property domain

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

property nonce

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

property opaque

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

property qop

Набор директив качества конфиденциальности, таких как auth и auth-int.

property realm

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

set_basic(realm='authentication required')

Очистить данные аутентификации и включить базовый аутентификатор.

set_digest(realm, nonce, qop=('auth',), opaque=None, algorithm=None, stale=False)

Очистить данные аутентификации и включить аутентификатор дайджестов.

property stale

Флаг, указывающий, что предыдущий запрос от клиента был отклонен из-за того, что значение nonce устарело.

to_header()

Преобразовать сохранённые значения в заголовок WWW-Authenticate.

property type

Тип механизма аутентификации. В настоящее время HTTP определяет Basic и Digest.

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

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

Изменения

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

date

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

etag

Обработанный и неуточнённый тег etag. Диапазоны всегда работают со строгими тегами 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

Имя файла на стороне клиента. Может быть строкой, или экземпляром 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–2022 Pallets
Licensed under the BSD 3-clause License.
https://werkzeug.palletsprojects.com/en/2.2.x/datastructures/

Spec-Zone.ru

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