РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
745 of 818 menu

Функция iri_to_uri

Функция iri_to_uri применяется для преобразования строки IRI (Internationalized Resource Identifier) в ASCII-URI (Uniform Resource Identifier) в соответствии с правилами, описанными в RFC 3987. Она кодирует не-ASCII символы в процентное представление, используя UTF-8 кодировку, и обрабатывает специальные символы, такие как пробелы и знаки пунктуации. Входной параметр принимает строку, содержащую IRI, и возвращает строку в формате ASCII-URI.

Синтаксис

from django.utils.encoding import iri_to_uri iri_to_uri(iri_string)

Пример

Давайте преобразуем IRI-строку с кириллическими символами в URI:

from django.utils.encoding import iri_to_uri iri_string = "https://example.com/путь/к/странице" res = iri_to_uri(iri_string) print(res)

Результат выполнения кода:

"https://example.com/%D0%BF%D1%83%D1%82%D1%8C/%D0%BA/%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B5"

Как видно из примера, кириллические символы были преобразованы в процентное представление, соответствующее их UTF-8 кодировке.

Пример

Преобразуем IRI с пробелами и специальными символами:

from django.utils.encoding import iri_to_uri iri_string = "https://example.com/search?q=привет мир&lang=ru" res = iri_to_uri(iri_string) print(res)

Результат выполнения кода:

"https://example.com/search?q=%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82%20%D0%BC%D0%B8%D1%80&lang=ru"

В этом примере пробел был преобразован в %20, а кириллические символы в параметре запроса закодированы в процентное представление.

Пример

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

from django.utils.encoding import iri_to_uri iri_string = "https://example.com/%D0%BF%D1%83%D1%82%D1%8C/новый" res = iri_to_uri(iri_string) print(res)

Результат выполнения кода:

"https://example.com/%D0%BF%D1%83%D1%82%D1%8C/%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9"

Функция корректно обрабатывает уже существующие процентные последовательности, преобразуя только не-ASCII символы в части "новый".

Пример

Используем функцию в контексте построения полного URL:

from django.utils.encoding import iri_to_uri from django.contrib.sites.models import Site site = Site.objects.get_current() base_url = "https://" + site.domain path = "/каталог/товары" url = base_url + iri_to_uri(path) print(url)

Результат выполнения кода:

"https://example.com/%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3/%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D1%8B"

Этот пример демонстрирует практическое применение функции при формировании URL с не-ASCII путями.

Смотрите также

  • функция uri_to_iri,
    которая выполняет обратное преобразование
  • функция slugify,
    которая преобразует строку в URL-совместимый слаг
  • функция force_str,
    которая преобразует объекты в строковое представление
  • функция smart_str,
    которая возвращает строковое представление объекта
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить