Spec-Zone.ru › Werkzeug 0.15

Справочные данные по URL

werkzeug.urls

werkzeug.urls используется для предоставления нескольких функций-обёртки для Python 2 urlparse, основная цель которых — обойти поведение Py2 stdlib и отсутствие поддержки Unicode. Хотя эта ситуация уже была несколько неудобной, она стала ещё сложнее, поскольку Python 3 urllib.parse на самом деле обрабатывает Unicode должным образом. Другими словами, этот модуль бы обёртывал две библиотеки с совершенно различным поведением. Поэтому теперь этот модуль содержит обратную совместимую подмену Python 3 urllib.parse, которая в основном совместима с API.

class werkzeug.urls.BaseURL

Базовый класс для URL и BytesURL.

ascii_host

Действует точно так же, как host, но вернёт результат, ограниченный ASCII. Если обнаруживается netloc, не являющийся ASCII, будет попытка декодирования с помощью idna. Это полезно для операций с сокетами, когда URL может содержать символы национальных языков.

auth

Часть аутентификации в URL, если доступна, None в противном случае.

decode_netloc()

Декодирует часть netloc в строку.

decode_query(*args, **kwargs)

Декодирует часть запроса URL. Это сокращение вызова url_decode() с аргументом запроса. Аргументы и ключевые аргументы передаются в url_decode() без изменений.

get_file_location(pathformat=None)

Возвращает кортеж с расположением файла в формате (server, location). Если netloc пуст в URL или указывает на localhost, он представлен как None.

Формат pathformat по умолчанию определяется автоматически, но должен быть задан при работе с URL конкретной системы. Поддерживаемые значения — 'windows' при работе с путями Windows или DOS и 'posix' при работе с путями posix.

Если URL не указывает на локальный файл, сервер и расположение представлены как None.

Параметры: pathformat – Ожидаемый формат компонента пути. В настоящее время поддерживаются 'windows' и 'posix'. По умолчанию None — автоматическое определение.
host

Часть host в URL, если доступна, иначе None. Host — это имя хоста или IP-адрес, указанные в URL. Порт не будет включён.

join(*args, **kwargs)

Объединяет этот URL с другим. Это просто функция удобства для вызова url_join() и повторного парсинга возвращаемого значения.

password

Пароль, если он был частью URL, None в противном случае. Он подвергается URL-декодированию и всегда будет строкой Unicode.

port

Порт в URL как целое число, если он был указан, None в противном случае. Не заполняет стандартные порты.

raw_password

Пароль, если он был частью URL, None в противном случае. В отличие от password, он не декодируется.

raw_username

Имя пользователя, если оно было частью URL, None в противном случае. В отличие от username, он не декодируется.

replace(**kwargs)

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

to_iri_tuple()

Возвращает кортеж URL, содержащий IRI. Попытается декодировать как можно больше информации в URL, не теряя данных, подобно тому, как это делает веб-браузер для строки URL.

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

to_uri_tuple()

Возвращает кортеж BytesURL, содержащий URI. Кодирует всю информацию в URL в соответствии с правилами, которые использует веб-браузер, используя ASCII.

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

to_url()

Возвращает строку URL или байты в зависимости от типа хранимой информации. Это просто удобная функция для вызова url_unparse() для данного URL.

username

Имя пользователя, если оно было частью URL, None в противном случае. Он подвергается URL-декодированию и всегда будет строкой Unicode.

class werkzeug.urls.BytesURL

Представляет обработанный URL в байтах.

decode(charset='utf-8', errors='replace')

Декодирует URL в кортеж строк. Кодировка используется только для пути, запроса и фрагмента.

encode_netloc()

Возвращает netloc без изменений как байты.

class werkzeug.urls.Href(base='./', charset='utf-8', sort=False, key=None)

Реализует вызываемую функцию, которая строит URL с заданным основанием. Функция может вызываться с любым количеством позиционных и ключевых аргументов, которые затем используются для сборки URL. Работает с URL и путями posix.

Позиционные аргументы добавляются как отдельные сегменты к пути URL:

>>> href = Href('/foo')
>>> href('bar', 23)
'/foo/bar/23'
>>> href('foo', bar=23)
'/foo/foo?bar=23'

Если любой из аргументов (позиционный или ключевой) имеет значение None, он будет пропущен. Если не указаны ключевые аргументы, последний аргумент может быть dict или MultiDict (или любой другой подкласс словаря), в противном случае ключевые аргументы используются для параметров запроса, удаляя первую конечную нижнюю подчёркивание из имени параметра:

>>> href(is_=42)
'/foo?is=42'
>>> href({'foo': 'bar'})
'/foo?foo=bar'

Комбинирование обоих методов запрещено:

>>> href({'foo': 'bar'}, bar=42)
Traceback (most recent call last):
  ...
TypeError: keyword arguments and query-dicts can't be combined

Обращение к атрибутам объекта href создаёт новый объект href с именем атрибута в качестве префикса:

>>> bar_href = href.bar
>>> bar_href("blub")
'/foo/bar/blub'

Если sort установлено в True, элементы сортируются по key или по алгоритму сортировки по умолчанию:

>>> href = Href("/", sort=True)
>>> href(a=1, b=2, c=3)
'/?a=1&b=2&c=3'

Добавлено в версии 0.5: sort и key были добавлены.

class werkzeug.urls.URL

Представляет обработанный URL. Ведёт себя как обычный кортеж, но также имеет дополнительные атрибуты, которые дают больше информации о URL.

encode(charset='utf-8', errors='replace')

Кодирует URL в кортеж байтов. Кодировка используется только для пути, запроса и фрагмента.

encode_netloc()

Кодирует часть netloc в безопасный URL ASCII в виде байтов.

werkzeug.urls.iri_to_uri(iri, charset='utf-8', errors='strict', safe_conversion=False)

Преобразует IRI в URI. Все символы, не являющиеся ASCII, и небезопасные символы, будут закодированы. Если URL имеет домен, он кодируется с помощью Punycode.

>>> iri_to_uri('http://\u2603.net/p\xe5th?q=\xe8ry%DF')
'http://xn--n3h.net/p%C3%A5th?q=%C3%A8ry%DF'
Параметры:
  • iri – IRI для преобразования.
  • charset – Кодировка IRI.
  • errors – Обработчик ошибок для использования при bytes.encode.
  • safe_conversion – Возвращает URL без изменений, если он содержит только символы ASCII и не содержит пробелов. Смотрите объяснение ниже.

Существует общая проблема с преобразованием IRI с некоторыми протоколами, которые нарушают спецификацию URI. Рассмотрим следующие два IRI:

magnet:?xt=uri:whatever
itms-services://?action=download-manifest

После парсинга мы не знаем, требует ли схема //, которое удаляется, если пусто, но имеет разное значение в конечном URL, если присутствует или отсутствует. В этом случае можно использовать safe_conversion, которое вернёт URL без изменений, если он содержит только символы ASCII и не содержит пробелов. Это может привести к URI с незакодированными символами, если он не был закодирован правильно, но сохраняет семантику URL. Werkzeug использует это для заголовка Location для редиректов.

Изменено в версии 0.15: Все зарезервированные символы остаются незакодированными. Ранее только некоторые зарезервированные символы оставались незакодированными.

Изменено в версии 0.9.6: Добавлен параметр safe_conversion.

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

END_OF_DOCUMENT_MARKER
werkzeug.urls.uri_to_iri(uri, charset='utf-8', errors='werkzeug.url_quote')

Преобразовать URI в IRI. Все допустимые символы UTF-8 раскладываются, оставляя все служебные и недопустимые символы в котировках. Если в URL есть домен, он декодируется из Punycode.

>>> uri_to_iri("http://xn--n3h.net/p%C3%A5th?q=%C3%A8ry%DF")
'http://\u2603.net/p\xe5th?q=\xe8ry%DF'
Параметры:
  • uri – URI для преобразования.
  • charset – кодировка для кодирования нецитированных байтов.
  • errors – обработчик ошибок для использования во время bytes.encode. По умолчанию недопустимые байты остаются цитированными.

Изменено в версии 0.15: Все служебные и недопустимые символы остаются цитированными. Ранее сохранялись только некоторые служебные символы, а недопустимые байты заменялись вместо того, чтобы оставаться цитированными.

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

werkzeug.urls.url_decode(s, charset='utf-8', decode_keys=False, include_empty=True, errors='replace', separator='&', cls=None)

Разбирать строку запроса и возвращать её как MultiDict. Есть разница в декодировании ключей на разных версиях Python. В Python 3 ключи всегда полностью декодируются, тогда как в Python 2 ключи остаются строками байтов, если они помещаются в ASCII. В 2.x ключи можно принудительно преобразовать в unicode, установив decode_keys в True.

Если charset установлен на None, декодирования в unicode не произойдёт, и будут возвращены сырые байты.

По умолчанию отсутствующее значение для ключа по умолчанию является пустым ключом. Если вы не хотите этого поведения, вы можете установить include_empty в False.

По умолчанию ошибки кодирования игнорируются. Если вы хотите другое поведение, вы можете установить errors на 'replace' или 'strict'. В строгом режиме возникает HTTPUnicodeError.

Изменено в версии 0.5: В предыдущих версиях «;» и «&» можно было использовать для декодирования URL. Это изменилось в 0.5, где поддерживается только «&». Если вы хотите использовать «;» вместо этого, можно предоставить другой separator.

Параметр cls был добавлен.

Параметры:
  • s – строка со строкой запроса для декодирования.
  • charset – кодировка строки запроса. Если установлено None, декодирования в unicode не произойдёт.
  • decode_keys – используется в Python 2.x для управления тем, должны ли ключи быть принудительно преобразованными в объекты unicode. Если установлено True, ключи всегда будут unicode. В противном случае они останутся str, если они помещаются в ASCII.
  • include_empty – установить на False если вы не хотите, чтобы пустые значения появлялись в словаре.
  • errors – поведение ошибок декодирования.
  • separator – разделитель пар, по умолчанию &
  • cls – необязательный класс словаря для использования. Если это не указано или None, используется стандартный MultiDict.
werkzeug.urls.url_decode_stream(stream, charset='utf-8', decode_keys=False, include_empty=True, errors='replace', separator='&', cls=None, limit=None, return_iterator=False)

Работает как url_decode(), но декодирует поток. Поведение потока и предела аналогично функциям, таким как make_line_iter(). Генератор пар непосредственно подаётся в cls, поэтому вы можете использовать данные во время их разбора.

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

Параметры:
  • stream – поток с закодированной строкой запроса
  • charset – кодировка строки запроса. Если установлено None, декодирования в unicode не произойдёт.
  • decode_keys – используется в Python 2.x для управления тем, должны ли ключи быть принудительно преобразованными в объекты unicode. Если установлено True, ключи всегда будут unicode. В противном случае они останутся str если они помещаются в ASCII.
  • include_empty – установить на False если вы не хотите, чтобы пустые значения появлялись в словаре.
  • errors – поведение ошибок декодирования.
  • separator – разделитель пар, по умолчанию &
  • cls – необязательный класс словаря для использования. Если это не указано или None, используется стандартный MultiDict.
  • limit – длина содержимого данных URL. Не обязательно, если предоставлен ограниченный поток.
  • return_iterator – если установлено True, аргумент cls игнорируется, и возвращается итератор по всем декодированным парам.
werkzeug.urls.url_encode(obj, charset='utf-8', encode_keys=False, sort=False, key=None, separator=b'&')

Кодировать словарь/MultiDict в URL. Если значение None, оно не будет отображаться в строке результата. По умолчанию кодируются только значения в строки целевой кодировки. Если encode_keys установлено в True, поддерживаются ключи unicode.

Если sort установлено в True, элементы сортируются по key или алгоритму сортировки по умолчанию.

Добавлена в версии 0.5: sort, key, и separator были добавлены.

Параметры:
  • obj – объект для кодирования в строку запроса.
  • charset – кодировка строки запроса.
  • encode_keys – установить в True если у вас есть ключи unicode. (Игнорируется в Python 3.x)
  • sort – установить в True если вы хотите, чтобы параметры сортировались по key.
  • separator – разделитель, используемый для пар.
  • key – необязательная функция, используемая для сортировки. Для получения более подробной информации ознакомьтесь с документацией sorted().
werkzeug.urls.url_encode_stream(obj, stream=None, charset='utf-8', encode_keys=False, sort=False, key=None, separator=b'&')

Подобно url_encode(), но записывает результаты в объект потока. Если поток None, возвращается генератор по всем закодированным парам.

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

Параметры:
  • obj – объект для кодирования в строку запроса.
  • stream – поток для записи закодированного объекта или None, если должен быть возвращён итератор по закодированным парам. В этом случае аргумент separator игнорируется.
  • charset – кодировка строки запроса.
  • encode_keys – установить в True если у вас есть ключи unicode. (Игнорируется в Python 3.x)
  • sort – установить в True если вы хотите, чтобы параметры сортировались по key.
  • separator – разделитель, используемый для пар.
  • key – необязательная функция, используемая для сортировки. Для получения более подробной информации ознакомьтесь с документацией sorted().
werkzeug.urls.url_fix(s, charset='utf-8')

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

>>> url_fix(u'http://de.wikipedia.org/wiki/Elf (Begriffskl\xe4rung)')
'http://de.wikipedia.org/wiki/Elf%20(Begriffskl%C3%A4rung)'
Параметры:
  • s – строка с URL для исправления.
  • charset – целевая кодировка для URL, если URL был задан как строка unicode.
werkzeug.urls.url_join(base, url, allow_fragments=True)

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

Параметры:
  • base – базовый URL для операции объединения.
  • url – URL для объединения.
  • allow_fragments – указывает, разрешены ли фрагменты.
werkzeug.urls.url_parse(url, scheme=None, allow_fragments=True)

Разбирает URL из строки в кортеж URL. Если в URL отсутствует схема, она может быть предоставлена в качестве второго аргумента. В противном случае она игнорируется. При необходимости фрагменты могут быть удалены из URL, установив allow_fragments на False.

Обратный этой функции является url_unparse().

Параметры:
  • url – URL для разбора.
  • scheme – схема по умолчанию для использования, если URL без схемы.
  • allow_fragments – если установлено на False, фрагмент будет удалён из URL.
werkzeug.urls.url_quote(string, charset='utf-8', errors='strict', safe='/:', unsafe='')

Кодировка URL для одной строки с заданной кодировкой.

Параметры:
  • s – строка для кодирования.
  • charset – используемая кодировка.
  • safe – необязательная последовательность безопасных символов.
  • unsafe – необязательная последовательность небезопасных символов.

Введено в версии 0.9.2: Параметр unsafe был добавлен.

werkzeug.urls.url_quote_plus(string, charset='utf-8', errors='strict', safe='')

Кодировка URL для одной строки с заданной кодировкой и преобразованием пробелов в «+».

Параметры:
  • s – Строка для кодирования.
  • charset – Используемая кодировка.
  • safe – Необязательная последовательность безопасных символов.
werkzeug.urls.url_unparse(components)

Обратная операция к url_parse(). Принимает произвольные, а также URL кортежи и возвращает URL в виде строки.

Параметры: components – Разбор URL в виде кортежа, который должен быть преобразован в строку URL.
werkzeug.urls.url_unquote(string, charset='utf-8', errors='replace', unsafe='')

Декодировка URL для одной строки с заданной кодировкой. Если кодировка установлена в None, то декодирование в Unicode не выполняется, и возвращаются исходные байты.

Параметры:
  • s – Строка для декодирования.
  • charset – Кодировка строки запроса. Если установлена в None, декодирование в Unicode не будет выполнено.
  • errors – Обработка ошибок при декодировании кодировки.
werkzeug.urls.url_unquote_plus(s, charset='utf-8', errors='replace')

Декодировка URL для одной строки с заданной charset и декодирование «+» в пробелы.

По умолчанию ошибки кодирования игнорируются. Если требуется другое поведение, можно установить errors в 'replace' или 'strict'. В строгом режиме генерируется HTTPUnicodeError.

Параметры:
  • s – Строка для декодирования.
  • charset – Кодировка строки запроса. Если установлена в None, декодирование в Unicode не будет выполнено.
  • errors – Обработка ошибок при декодировании charset.

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

Spec-Zone.ru

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