resolve
Функция resolve применяется к строке URL-пути и возвращает объект ResolverMatch,
содержащий информацию о представлении, которое будет вызвано для этого пути,
а также переданные параметры и пространство имён. Это полезно для динамического
анализа URL-адресов и отладки маршрутов. Функция принимает один обязательный
аргумент - путь в виде строки, и один необязательный аргумент - словарь
дополнительных настроек URL-конфигурации.
Синтаксис
from django.urls import resolve
res = resolve(path, urlconf=None)
Пример
Давайте разрешим URL-путь для главной страницы блога:
from django.urls import resolve
res = resolve('/blog/')
print(res)
Результат выполнения кода:
"ResolverMatch(func=blog.views.index, args=(), kwargs={}, url_name=index, app_names=[], namespaces=[], route='blog/')"
Пример
Разрешим путь с параметром и получим отдельные части:
from django.urls import resolve
res = resolve('/article/42/')
print(res.func)
print(res.kwargs)
print(res.url_name)
Результат выполнения кода:
"<function article_detail at 0x7f8a1c2d3e10>"
"{'id': 42}"
"article_detail"
Пример
Обработаем ситуацию, когда путь не соответствует ни одному маршруту:
from 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')
Результат выполнения кода:
"The path does not match any URL pattern"