Determine complete Django url configuration

Viewed 19590

Is there a way to get the complete django url configuration?

For example Django's debugging 404 page does not show included url configs, so this is not the complete configuration.


Answer: Thanks to Alasdair, here is an example script:

import urls

def show_urls(urllist, depth=0):
    for entry in urllist:
        print("  " * depth, entry.regex.pattern)
        if hasattr(entry, 'url_patterns'):
            show_urls(entry.url_patterns, depth + 1)

show_urls(urls.urlpatterns)
10 Answers

Django extensions provides a utility to do this as a manage.py command.

pip install django-extensions

Then add django_extensions to your INSTALLED_APPS in settings.py. then from the console just type the following

python manage.py show_urls

If you want a list of all the urls in your project, first you need to install django-extensions

You can simply install using command.

pip install django-extensions

For more information related to package goto django-extensions

After that, add django_extensions in INSTALLED_APPS in your settings.py file like this:

INSTALLED_APPS = (
...
'django_extensions',
...
)

urls.py example:

from django.urls import path, include
from . import views
from . import health_views

urlpatterns = [
    path('get_url_info', views.get_url_func),
    path('health', health_views.service_health_check),
    path('service-session/status', views.service_session_status)
]

And then, run any of the command in your terminal

python manage.py show_urls

or

./manage.py show_urls

Sample output example based on config urls.py:

/get_url_info             django_app.views.get_url_func
/health                   django_app.health_views.service_health_check
/service-session/status   django_app.views.service_session_status

For more information you can check the documentation.

Related