During an IT audit, I needed to represent the size of an application, so I decided to use the total number of URLs in Django to signify the application's scale.
from django.urls.resolvers import get_resolver
root_resolver = get_resolver()
def _join_namespace(a, b):
return (a + ':' if a else '') + (b or '')
def _count_urls(namespace, resolver):
count = 0
_namespace = _join_namespace(namespace, resolver.namespace)
for ns, (prefix, res) in resolver.namespace_dict.items():
count += _count_urls(_namespace, res)
for n, l in resolver.reverse_dict.items():
if callable(n):
continue
count += 1
return count
print('URLS count:', _count_urls('', root_resolver))
This script calculates and prints the total number of URLs in a Django application. By analyzing the URL patterns, it sums up all the available endpoints, thereby providing an indicator of the application's size.
Comments