def render(urlpatterns, base='', namespace=None, depth=0):
views = {'patterns': {}, 'resolvers': {}}
for p in urlpatterns:
if isinstance(p, RegexURLPattern):
try:
if not p.name:
name = p.name
elif namespace:
name = '{0}:{1}'.format(namespace, p.name)
else:
name = p.name
print('{}({}) {}'.format(('| '*(depth-1) + '|-') if depth else '', name, p.regex.pattern))
except ViewDoesNotExist:
continue
elif isinstance(p, RegexURLResolver):
try:
patterns = p.url_patterns
except ImportError:
continue
if namespace and p.namespace:
_namespace = '{0}:{1}'.format(namespace, p.namespace)
else:
_namespace = (p.namespace or namespace)
print('{}({}) {}'.format(('| '*(depth-1) + '|-') if depth else '', _namespace, p.regex.pattern))
if isinstance(p, LocaleRegexURLResolver):
for langauge in settings.LANGUAGES:
with translation.override(langauge[0]):
render(patterns, base + p.regex.pattern, namespace=_namespace, depth=depth+1)
else:
render(patterns, base + p.regex.pattern, namespace=_namespace, depth=depth+1)
return views
评论列表
文章目录