diff --git a/flask_debugtoolbar/__init__.py b/flask_debugtoolbar/__init__.py index bf8d25f..f5fce66 100644 --- a/flask_debugtoolbar/__init__.py +++ b/flask_debugtoolbar/__init__.py @@ -97,6 +97,7 @@ class DebugToolbarExtension(object): 'flask_debugtoolbar.panels.template.TemplateDebugPanel', 'flask_debugtoolbar.panels.sqlalchemy.SQLAlchemyDebugPanel', 'flask_debugtoolbar.panels.logger.LoggingPanel', + 'flask_debugtoolbar.panels.route_list.RouteListDebugPanel', 'flask_debugtoolbar.panels.profiler.ProfilerDebugPanel', ), } diff --git a/flask_debugtoolbar/panels/route_list.py b/flask_debugtoolbar/panels/route_list.py new file mode 100644 index 0000000..c396433 --- /dev/null +++ b/flask_debugtoolbar/panels/route_list.py @@ -0,0 +1,34 @@ +from flask_debugtoolbar.panels import DebugPanel +from flask import current_app + +_ = lambda x: x + + +class RouteListDebugPanel(DebugPanel): + """ + Panel that displays the URL routing rules. + """ + name = 'RouteList' + has_content = True + routes = [] + + def nav_title(self): + return _('Route List') + + def title(self): + return _('Route List') + + def url(self): + return '' + + def nav_subtitle(self): + count = len(self.routes) + return '%s %s' % (count, 'route' if count == 1 else 'routes') + + def process_request(self, request): + self.routes = list(current_app.url_map.iter_rules()) + + def content(self): + return self.render('panels/route_list.html', { + 'routes': self.routes, + }) diff --git a/flask_debugtoolbar/templates/panels/route_list.html b/flask_debugtoolbar/templates/panels/route_list.html new file mode 100644 index 0000000..d987d23 --- /dev/null +++ b/flask_debugtoolbar/templates/panels/route_list.html @@ -0,0 +1,28 @@ + + + + + + + + + + + + {% if routes %} + {% for route in routes|sort(attribute='rule') %} + + + + + + + + {% endfor %} + {% else %} + + + + {% endif %} + +
URL routeEndpoint nameHTTP methodsIs aliasRedirect to
{{ route.rule }}{{ route.endpoint }}{{ route.methods|sort|join(', ') }}{{ route.alias }}{{ route.redirect_to }}
No routes have been configured.