resolve

Функция resolve применяется к строке URL-пути и возвращает объект ResolverMatch, содержащий информацию о представлении, которое будет вызвано для этого пути, а также переданные параметры и пространство имён. Это полезно для динамического анализа URL-адресов и отладки маршрутов. Функция принимает один обязательный аргумент - путь в виде строки, и один необязательный аргумент - словарь дополнительных настроек URL-конфигурации.

Синтаксис

pythonfrom django.urls import resolve

res = resolve(path, urlconf=None)

Пример

Давайте разрешим URL-путь для главной страницы блога:

pythonfrom django.urls import resolve

res = resolve('/blog/')
print(res)

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

python"ResolverMatch(func=blog.views.index, args=(), kwargs={}, url_name=index, app_names=[], namespaces=[], route='blog/')"

Пример

Разрешим путь с параметром и получим отдельные части:

pythonfrom django.urls import resolve

res = resolve('/article/42/')
print(res.func)
print(res.kwargs)
print(res.url_name)

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

python"<function article_detail at 0x7f8a1c2d3e10>"
"{'id': 42}"
"article_detail"

Пример

Обработаем ситуацию, когда путь не соответствует ни одному маршруту:

pythonfrom django.urls import resolve
from django.urls.exceptions import Resolver404

try:
  res = resolve('/unknown/path/')
except Resolver404:
  print('The path does not match any URL pattern')

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

python"The path does not match any URL pattern"

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

  • функция reverse,
    которая выполняет обратное преобразование имени маршрута в URL-путь
  • функция path,
    которая определяет маршрут с использованием конвертеров типов
  • функция re_path,
    которая определяет маршрут с помощью регулярных выражений
  • функция include,
    которая подключает другие URL-конфигурации