Flask-DebugToolbar¶
This extension adds a toolbar overlay to Flask applications containing useful information for debugging.

Usage¶
Setting up the debug toolbar is simple:
from flask import Flask
from flask_debugtoolbar import DebugToolbarExtension
app = Flask(__name__)
# the toolbar is only enabled in debug mode:
app.debug = True
# set a 'SECRET_KEY' to enable the Flask session cookies
app.config['SECRET_KEY'] = '<replace with a secret key>'
toolbar = DebugToolbarExtension(app)
The toolbar will automatically be injected into HTML responses when debug mode
is on. In production, setting app.debug = False
will disable the toolbar.
This extension also supports the Flask app factory pattern by separately creating the toolbar and later initializing it for an app:
toolbar = DebugToolbarExtension()
# Then later on.
app = create_app('the-config.cfg')
toolbar.init_app(app)
Configuration¶
The toolbar support several configuration options:
Name | Description | Default |
---|---|---|
DEBUG_TB_ENABLED |
Enable the toolbar? | app.debug |
DEBUG_TB_HOSTS |
Whitelist of hosts to display toolbar | any host |
DEBUG_TB_INTERCEPT_REDIRECTS |
Should intercept redirects? | True |
DEBUG_TB_PANELS |
List of module/class names of panels | enable all built-in panels |
DEBUG_TB_PROFILER_ENABLED |
Enable the profiler on all requests | False , user-enabled |
DEBUG_TB_TEMPLATE_EDITOR_ENABLED |
Enable the template editor | False |
To change one of the config options, set it in the Flask app’s config like:
app.config['DEBUG_TB_INTERCEPT_REDIRECTS'] = False
Panels¶
Built-In Panels¶
Versions¶
flask_debugtoolbar.panels.versions.VersionDebugPanel
Shows the installed Flask version. The expanded view displays all installed packages and their versions as detected by setuptools
.
Time¶
flask_debugtoolbar.panels.timer.TimerDebugPanel
Shows the time taken to process the current request. The expanded view includes the breakdown of CPU time, by user and system, wall clock time, and context switches.

HTTP Headers¶
flask_debugtoolbar.panels.headers.HeaderDebugPanel
Displays the HTTP headers for the current request.

Request Vars¶
flask_debugtoolbar.panels.request_vars.RequestVarsDebugPanel
Displays details of the Flask request-related variables, including the view function parameters, cookies, session variables, and GET and POST variables.

Config¶
flask_debugtoolbar.panels.config_vars.ConfigVarsDebugPanel
Shows the contents of the Flask application’s config dict app.config
.

Templates¶
flask_debugtoolbar.panels.template.TemplateDebugPanel
Shows information about the templates rendered for this request, and the value of the template parameters provided.

SQLAlchemy¶
flask_debugtoolbar.panels.sqlalchemy.SQLAlchemyDebugPanel
Shows SQL queries run during the current request.
Note
This panel requires using the Flask-SQLAlchemy extension in order to record the queries. See the Flask-SQLAlchemy Quickstart section to configure it.
For additional details on query recording see the
get_debug_queries()
documentation.
Note
SQL syntax highlighting requires Pygments to be installed.

Logging¶
flask_debugtoolbar.panels.logger.LoggingPanel
Displays log messages recorded during the current request.

Route List¶
flask_debugtoolbar.panels.route_list.RouteListDebugPanel
Displays the Flask URL routing rules.
Profiler¶
flask_debugtoolbar.panels.profiler.ProfilerDebugPanel
Reports profiling data for the current request. Due to the performance overhead, profiling is disabled by default. Click the checkmark to toggle profiling on or off. After enabling the profiler, refresh the page to re-run it with profiling.

Thanks¶
This was based on the original django-debug-toolbar. Thanks to Michael van Tellingen for the original development of this Flask extension, and to all the individual contributors.