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 @@ +
| URL route | +Endpoint name | +HTTP methods | +Is alias | +Redirect to | +
|---|---|---|---|---|
| {{ route.rule }} | +{{ route.endpoint }} | +{{ route.methods|sort|join(', ') }} | +{{ route.alias }} | +{{ route.redirect_to }} | +
| No routes have been configured. | +