Как получить строку url из url с помощью resolve django для RBAC

Я использовал extract_views_from_urlpatterns метод команды управления show_urls в пакете django-extenstion для заполнения системных урлов в БД. Теперь при каждом запросе пользователя к серверу он будет перехватываться в промежуточном ПО, где я хочу проверить, найден ли запрашиваемый URL в модели URLMaster (хранилище всех системных URL), но он не совпал из-за того, что запрашиваемый url не найден здесь Я прилагаю код.

Заполнение URL-адресов

urlconf = __import__(settings.ROOT_URLCONF)
urls = Command().extract_views_from_urlpatterns(urlconf.urls.urlpatterns)
for view, url, url_name in urls:
    if url_name is None:
        URLMaster.objects.get_or_create(url=url, defaults=dict(view_name=view.__qualname__, url_name=url_name))

В настоящее время я проверяю этот URL в режиме просмотра, далее буду проверять в промежуточном ПО.

from django.contrib.admindocs.views import simplify_regex # for simplifying regex
from src.core.models import URLMaster # model has all the url's

request_url = request._request.resolver_match.route
print(request_url) # will print 'rough/packet-split/(?P<pk>[^/.]+)/packet-list/$'

# simplifying the URL
print(simplify_regex(request_url)) # will print '/rough/packet-split/<pk>/packet-list/'

# The same url I have saved in DB
url_master_url = URLMaster.objects.get(id=1216).url
print(url_master_url) # will print 'rough/^packet-split/(?P<pk>[^/.]+)/packet-list\\.(?P<format>[a-z0-9]+)/?$'

# now simplifying the URL
print(simplify_regex(url_master_url)) # will print '/rough/packet-split/<pk>/packet-list\\.<format>/'

# now i am comparing is it the same like
simplify_regex(url_master_url) == simplify_regex(request_url) # returning false due to the url mismatched

Я привязываю разрешение к определенному URL. Но оно не совпало, поэтому есть ли какой-нибудь подход к сравнению или сохранению URL в DB

Вернуться на верх