Spec-Zone.ru › Werkzeug 0.16

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

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

Для общих целей

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

class werkzeug.datastructures.TypeConversionDict

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

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

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

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

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

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

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

copy()

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

class werkzeug.datastructures.MultiDict(mapping=None)

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

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

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), где значения — список всех значений, связанных с ключом.

listvalues()

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

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

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

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

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

popitemlist()

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

poplist(key)

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

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

setdefault(key, default=None)

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

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

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

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

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

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

список list

to_dict(flat=True)

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

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

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

Неизменяемый 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])

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

Эта структура данных полезна, если вам нужно более удобное средство обработки заголовков 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(iterable)

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

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

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

>>> d = Headers([('Content-Length', '42')])
>>> d.get('Content-Length', type=int)
42

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

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

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

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

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

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

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

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

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

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

has_key(key)

Проверяет наличие ключа.

pop(key=None, default=no value)

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

Параметры: key – Ключ для удаления. Если это целое число, удаляется элемент в этом месте, если это строка, удаляется значение для этого ключа. Если ключ опущен или None, удаляется последний элемент.
Возвращает: элемент.
popitem()

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

remove(key)

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

Параметры: key – Ключ для удаления.
set(_key, _value, **kw)

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

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

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

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

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

Параметры:
  • ключ – Ключ для поиска.
  • значение_по_умолчанию – Значение по умолчанию, которое будет возвращено, если ключ не найден в словаре. Если не указано, по умолчанию None.
to_list(charset='iso-8859-1')

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

Устарело начиная с версии 0.9.

to_wsgi_list()

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

Значения являются строками байтов в Python 2, преобразованными в latin1, и строками Unicode в Python 3 для кодирования WSGI-сервером.

Возвращает: список
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)

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

Параметры: итерируемый_объект – обновляет множество элементами из итерируемого объекта.
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

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

best

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

best_match(matches, default=None)

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

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

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

Параметры: ключ – Ключ для поиска.
index(key)

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

Параметры: ключ – Ключ для поиска.

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

quality(key)

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

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

to_header()

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

values()

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

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

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

accept_html

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

accept_json

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

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»

max_stale

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

min_fresh

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

no_transform

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

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»

must_revalidate

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

private

Доступ к «private»

proxy_revalidate

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

public

Доступ к «public»

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.

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

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

cnonce

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

nc

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

nonce

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

opaque

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

password

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

qop

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

realm

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

response

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

uri

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

username

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

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

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

algorithm

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

static auth_property(name, doc=None)

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

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

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

domain

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

nonce

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

opaque

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

qop

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

realm

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

set_basic(realm='authentication required')

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

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

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

stale

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

to_header()

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

type

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

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

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

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

date = None

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

etag = None

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

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 = None

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

to_content_range_header(length)

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

to_header()

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

units = None

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

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

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

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

length

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

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

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

start

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

stop

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

units

Единицы измерения, обычно «байты»

unset()

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

Другие

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

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

stream

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

filename

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

name

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

headers

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

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

close()

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

content_length

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

content_type

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

mimetype

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

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

mimetype_params

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

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

save(dst, buffer_size=16384)

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

Для безопасного сохранения файлов также ознакомьтесь с %%%CODE_BLOCK_364%%.

Параметры:
  • dst – имя файла или открытый объект файла, в который сохраняется загруженный файл.
  • buffer_size – размер буфера. Это работает так же, как и параметр length функции shutil.copyfileobj().

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

Spec-Zone.ru

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