Spec-Zone.ru › Werkzeug 2.3

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

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

Возвращает поверхностную изменчивую копию этого объекта. Имейте в виду, что стандартная функция библиотеки 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, генерируемое этим классом, также является подклассом исключения BadRequest HTTP и будет отображать страницу для 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, значение будет удалено из списка.
Возвращает:

a 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 — итерируемый объект со значениями по умолчанию. Он либо копируется (если это был список), либо преобразуется в список перед возвратом.
Возвращает:

a list

END_OF_DOCUMENT_MARKER
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])

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

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

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

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

Изменения

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

get_all(name)

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

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

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

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

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

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

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

Изменения

Изменено в версии 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().

Параметры:
  • ключ – Ключ, который нужно вставить.
  • значение – Значение, которое нужно вставить.
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 set. При вызове все элементы преобразуются в нижний регистр, и порядок теряется.

Параметры:

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’

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

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

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

Преобразовать множество etags в строку заголовка 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) –
  • token (str | None) –
clear() → None. Remove all items from D.
copy() → a shallow copy of D
classmethod from_header(value)

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

Параметры:

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

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

те.Self | None

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

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

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

pop(k[, d]) → v, remove specified key and return the corresponding value.

Если ключ не найден, вернуть значение по умолчанию, если задано; в противном случае, вызовите исключение KeyError.

popitem()

Удалить и вернуть пару (ключ, значение) как кортеж из двух элементов.

Пары возвращаются в порядке LIFO (последним вошел, первым вышел). Вызывает исключение KeyError, если словарь пустой.

setdefault(key, default=None, /)

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

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

to_header()

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

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

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

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

str

token

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

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

type

Схема авторизации, например, Basic, Digest, или Bearer.

update([E, ]**F) → None. Update D from dict/iterable E and F.

Если E присутствует и имеет метод .keys(), то выполняется: for k in E: D[k] = E[k]. Если E присутствует и не имеет метода .keys(), то выполняется: for k, v in E: D[k] = v. В обоих случаях, это выполняется за этим: for k in F: D[k] = F[k].

values() → an object providing a view on D's values
END_OF_DOCUMENT_MARKER
class werkzeug.datastructures.WWWAuthenticate(auth_type=None, 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 | None) –
  • values (dict[str, str] | None) –
  • token (str | None) –
static auth_property(name, doc=None)

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

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

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

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

property

clear() → None. Remove all items from D.
copy() → a shallow copy of D
classmethod from_header(value)

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

Параметры:

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

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

te.Self | None

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

items() → a set-like object providing a view on D's items
keys() → a set-like object providing a view on D's keys
property parameters: dict[str, str]

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

pop(k[, d]) → v, remove specified key and return the corresponding value.

Если ключ не найден, верните значение по умолчанию, если оно задано; в противном случае, вызовите исключение KeyError.

popitem()

Удалить и вернуть пару (ключ, значение) как кортеж из 2 элементов.

Пары возвращаются в порядке LIFO (последним вошел — первым вышел). Вызывает исключение KeyError, если словарь пуст.

property qop: set[str]

Параметр qop как множество.

Устарело начиная с версии 2.3: Будет удалено в Werkzeug 3.0. Он станет таким же, как и другие параметры, возвращая строку.

set_basic(realm='authentication required')

Очистить все существующие данные и установить вызов Basic.

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

Параметры:

realm (str) –

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

None

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

Очистить все существующие данные и установить вызов Digest.

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

Параметры:
  • realm (str) –
  • nonce (str) –
  • qop (Sequence[str]) –
  • opaque (str | None) –
  • algorithm (str | None) –
  • stale (bool) –
Тип возвращаемого значения:

None

setdefault(key, default=None, /)

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

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

property stale: bool | None

Параметр stale в виде булевого значения.

Устарело начиная с версии 2.3: Будет удалено в Werkzeug 3.0. Он станет таким же, как и другие параметры, возвращая строку.

to_header()

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

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

str

property token: str | None

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

property type: str

Схема авторизации, например, Basic, Digest, или Bearer.

update([E, ]**F) → None. Update D from dict/iterable E and F.

Если E присутствует и имеет метод .keys(), то выполняет: for k in E: D[k] = E[k]. Если E присутствует и не имеет метода .keys(), то выполняет: for k, v in E: D[k] = v. В любом случае, это дополняется: for k in F: D[k] = F[k]

END_OF_DOCUMENT_MARKER
values() → an object providing a view on D's values
class werkzeug.datastructures.IfRange(etag=None, date=None)

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

Изменения

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

Другие

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

Изменения

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

close()

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

property content_length

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

property content_type

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

property mimetype

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

Изменения

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

property mimetype_params

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

Изменения

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

save(dst, buffer_size=16384)

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

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

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

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

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

Spec-Zone.ru

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