Spec-Zone.ru › Werkzeug 2.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 и отобразит страницу для 400 BAD REQUEST в случае перехвата в общем обработчике исключений HTTP.

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

Параметры

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

add(key, value)

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

Changelog

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

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

Changelog

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

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

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

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

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

Параметры

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

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

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

Параметры
  • ключ – Ключ для поиска.
  • значение_по_умолчанию – Значение по умолчанию, которое будет возвращено, если ключ не найден. Если не указано иначе, возвращается None.
  • тип – Вызываемый объект, используемый для преобразования значения в Headers. Если этот вызываемый объект возбуждает ValueError, возвращается значение по умолчанию.
  • как_байты – вернуть байты вместо строк.
get_all(name)

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

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

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

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

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

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

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

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

has_key(key)

Устарело начиная с версии 2.0: Будет удалено в Werkzeug 2.1. Используйте key in data вместо этого.

pop(key=None, default=no value)

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

Параметры

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

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

элемент.

popitem()

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

remove(key)

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

Параметры

ключ – Ключ, который нужно удалить.

END_OF_DOCUMENT_MARKER
set(_key, _value, **kw)

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

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

Changelog

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

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

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

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

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

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

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

setlistdefault(key, default)

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

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

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

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

to_wsgi_list()

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

Возвращает

список

update(*args, **kwargs)

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

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

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

Changelog

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

class werkzeug.datastructures.EnvironHeaders(environ)

Только для чтения версия заголовков из среды WSGI. Она предоставляет тот же интерфейс, что и Headers, и создаётся из среды WSGI.

Начиная с Werkzeug 0.3, исключение KeyError, генерируемое этим классом, также является подклассом исключения BadRequest HTTP и отобразит страницу для 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, если заголовок не найден в множестве.

Changelog

Изменено в версии 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(). Если вы планируете подклассифицировать его и добавлять свои собственные элементы, ознакомьтесь с исходным кодом этого класса.

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

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

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

Добавлена в версии 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. По умолчанию все слабые теги не являются частью этого множества.

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)

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

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

Changelog

Изменено в версии 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 строки запроса; дублируется, так как прокси могут изменять строку запроса во время передачи. Только аутентификация HTTP digest.

property username

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

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

Обеспечивает простой доступ к заголовкам WWW-Authenticate.

property algorithm

Строка, указывающая пару алгоритмов, используемых для создания digest и контрольной суммы. Если она отсутствует, предполагается «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')

Очистка информации об авторизации и включение аутентификации basic.

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

Очистка информации об авторизации и включение аутентификации digest.

property stale

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

to_header()

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

property type

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

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

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

Changelog

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

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

to_header()

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

units

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

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

Представляет заголовок диапазона содержимого.

Изменения

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

property length

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

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

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

property start

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

property stop

Конечная точка диапазона (не включительно) или None. Может быть None только если 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

Имя файла на стороне клиента.

name

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

headers

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

Изменения

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

close()

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

property content_length

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

property content_type

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

property mimetype

Подобно content_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–2021 Pallets
Licensed under the BSD 3-clause License.
https://werkzeug.palletsprojects.com/en/2.0.x/datastructures/

Spec-Zone.ru

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