Spec-Zone.ru › Werkzeug 2.1

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

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 is a dictionary subclass customized to deal with multiple values for the same key, which is used, for example, by the parsing functions in the wrappers. This is necessary because some HTML form elements pass multiple values for the same key.

MultiDict implements all standard dictionary methods. Internally, it saves all values for a key as a list, but the standard dict access methods will only return the first value for a key. If you want to gain access to the other values, too, you have to use the list methods as explained below.

Базовое использование:

>>> 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.

A MultiDict can be constructed from an iterable of (key, value) tuples, a dict, a MultiDict or from Werkzeug 0.2 onwards some keyword parameters.

Параметры

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

add(key, value)

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

Changelog

New in version 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)

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

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

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

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

class werkzeug.datastructures.ImmutableOrderedMultiDict(mapping=None)

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

Изменения

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

copy()

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

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

Параметры
  • ключ – Ключ для поиска.
  • значение_по_умолчанию – Значение по умолчанию, которое будет возвращено, если ключ не найден. Если не указано, возвращается 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 всех значений для ключа.

pop(key=None, default=no value)

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

Параметры

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

Возвращает

элемент.

popitem()

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

remove(key)

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

Параметры

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

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

Параметры

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

clear()

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

discard(header)

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

Параметры

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

find(header)

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

Параметры

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

index(header)

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

Параметры

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

remove(header)

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

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

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

Параметры

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

to_header()

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

update(iterable)

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

Параметры

итерируемый_объект – обновляет множество элементами из итерируемого объекта.

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

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

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

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

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

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

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

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

property best

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

best_match(matches, default=None)

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

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

Возвращает позицию записи или -1.

Параметры

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

index(key)

Возвращает позицию записи или вызывает ValueError.

Параметры

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

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

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

quality(key)

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

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

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

to_header()

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

values()

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

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

Аналогично Accept, но со специальными методами и поведением для MIME-типов.

property accept_html

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

property accept_json

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

property accept_xhtml

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

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

Аналогично Accept, но с нормализацией для наборов символов.

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

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

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

Контроль кэширования для запросов. Это неизменяемый объект, предоставляющий доступ ко всем заголовкам контроля кэширования, относящимся к запросу.

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

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

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

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

no_cache

доступ к ‘no-cache’

no_store

доступ к ‘no-store’

max_age

доступ к ‘max-age’

no_transform

доступ к ‘no-transform’

property max_stale

доступ к ‘max-stale’

property min_fresh

доступ к ‘min-fresh’

property only_if_cached

доступ к ‘only-if-cached’

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

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

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

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

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

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

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

no_cache

Доступ к 'no-cache'

no_store

Доступ к 'no-store'

max_age

Доступ к 'max-age'

no_transform

Доступ к 'no-transform'

property immutable

Доступ к 'immutable'

property must_revalidate

Доступ к 'must-revalidate'

property private

Доступ к 'private'

property proxy_revalidate

Доступ к 'proxy-revalidate'

property public

Доступ к 'public'

property s_maxage

Доступ к 's-maxage'

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

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

Changelog

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

date

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

etag

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

to_header()

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

class werkzeug.datastructures.Range(units, ranges)

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

Исключения

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

Changelog

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

Changelog

Новый в версии 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

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

name

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

headers

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

Changelog

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

close()

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

property content_length

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

property content_type

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

property mimetype

Подобно content_type, но без параметров (например, без кодировки, типа и т. д.) и всегда в нижнем регистре. Например, если тип содержимого 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.1.x/datastructures/

Spec-Zone.ru

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