Spec-Zone.ru › Werkzeug 0.15

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

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

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

a list

to_dict(flat=True)

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

Параметры: flat – Если установлено в False, возвращаемый словарь будет содержать списки со всеми значениями. В противном случае он будет содержать только первое значение для каждого ключа.
Возвращает: словарь 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 в случае перехвата в catch-all для исключений 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, аналогично тому, как это делают многомерные словари. Основное отличие состоит в том, что также можно задавать значения типа bytes, которые будут автоматически декодированы с помощью кодировки 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.
Возвращает:

a 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 – Значение для вставки.
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 , если поймано в обработчике 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

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

accept_json

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

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

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

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

as_set(include_weak=False)

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

contains(etag)

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

contains_raw(etag)

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

contains_weak(etag)

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

is_strong(etag)

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

is_weak(etag)

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

to_header()

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

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

Представляет заголовок Authorization, отправленный клиентом. Вы не должны создавать такой объект самостоятельно, но используйте его, когда он возвращается функцией parse_authorization_header.

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

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

cnonce

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

nc

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

nonce

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

opaque

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

password

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

qop

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

realm

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

response

Строка из 32 шестнадцатеричных цифр, вычисленная в соответствии с RFC 2617, которая доказывает, что пользователь знает пароль. Только для аутентификации 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')

Очистить данные аутентификации и включить аутентификацию Basic.

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

Очистить данные аутентификации и включить аутентификацию Digest.

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() вместо длинной формы storage.stream.read().

stream

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

filename

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

name

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

headers

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

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

close()

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

content_length

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

content_type

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

mimetype

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

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

mimetype_params

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

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

save(dst, buffer_size=16384)

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

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

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

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

Spec-Zone.ru

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