Spec-Zone.ru › Werkzeug 1.0

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

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

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

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

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

class werkzeug.datastructures.TypeConversionDict

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

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

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

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

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

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

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

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

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

copy()

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

class werkzeug.datastructures.MultiDict(mapping=None)

A MultiDict — это подкласс словаря, предназначенный для работы с несколькими значениями для одного ключа. Например, он используется функциями разбора в обёртках. Это необходимо, потому что некоторые элементы HTML-форм передают несколько значений для одного и того же ключа.

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

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

>>> d = MultiDict([('a', 'b'), ('a', 'c')])
>>> d
MultiDict([('a', 'b'), ('a', 'c')])
>>> d['a']
'b'
>>> d.getlist('a')
['b', 'c']
>>> 'a' in d
True

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

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

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

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

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

Changelog

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

Параметры:
  • key – ключ для значения.
  • value – добавляемое значение.
clear() → None. Remove all items from D.
copy()

Возвращает поверхностную копию этого объекта.

deepcopy(memo=None)

Возвращает глубокую копию этого объекта.

fromkeys()

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

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

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

Параметры:
  • имя – имя поля.
  • файл – имя файла или объект типа file
  • filename – необязательное имя файла
  • content_type – необязательный тип содержимого

HTTP Related

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

Если объект заголовков связан, вы не должны добавлять строки 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().

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

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

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

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

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

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

setlistdefault(key, default)

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

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

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

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

to_wsgi_list()

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

Значения — байтовые строки в Python 2, преобразованные в latin1, и строковые значения Unicode в Python 3, для того чтобы 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 в случае перехвата при обработке исключений 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. При вызове все элементы преобразуются в нижний регистр, и порядок теряется.

Параметры: preserve_casing – если установлено True, элементы возвращаемого множества будут иметь исходный регистр, как в HeaderSet, иначе они будут в нижнем регистре.
clear()

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

discard(header)

Аналогично remove(), но игнорирует ошибки.

Параметры: заголовок – заголовок, который нужно удалить.
find(header)

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

Параметры: заголовок – заголовок, который нужно найти.
index(header)

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

Параметры: заголовок – заголовок, который нужно найти.
remove(header)

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

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

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

Параметры: заголовок – заголовок, который нужно удалить.
to_header()

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

update(iterable)

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

Параметры: итерируемый объект – обновление множества элементами из итерируемого объекта.
class werkzeug.datastructures.Accept(values=())

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

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

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

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

>>> print a['utf-8']
0.7
>>> a['utf7']
0

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

Изменения

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

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-типов.

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»

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»

immutable

доступ к «immutable»

must_revalidate

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

private

доступ к «private»

proxy_revalidate

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

public

доступ к «public»

s_maxage

доступ к «s-maxage»

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

username

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

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

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

algorithm

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

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

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

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 – имя файла, os.PathLike или открытый объект файла для записи.
  • buffer_size – Передаётся как параметр length функции shutil.copyfileobj().

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

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

Spec-Zone.ru

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