1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387
|
Panels
======
The Django Debug Toolbar ships with a series of built-in panels. In addition,
several third-party panels are available.
Default built-in panels
-----------------------
The following panels are enabled by default.
Version
~~~~~~~
Path: ``debug_toolbar.panels.versions.VersionsPanel``
Shows versions of Python, Django, and installed apps if possible.
Timer
~~~~~
Path: ``debug_toolbar.panels.timer.TimerPanel``
Request timer.
Settings
~~~~~~~~
Path: ``debug_toolbar.panels.settings.SettingsPanel``
A list of settings in settings.py.
Headers
~~~~~~~
Path: ``debug_toolbar.panels.headers.HeadersPanel``
This panels shows the HTTP request and response headers, as well as a
selection of values from the WSGI environment.
Note that headers set by middleware placed before the debug toolbar middleware
in ``MIDDLEWARE_CLASSES`` won't be visible in the panel. The WSGI server
itself may also add response headers such as ``Date`` and ``Server``.
Request
~~~~~~~
Path: ``debug_toolbar.panels.request.RequestPanel``
GET/POST/cookie/session variable display.
SQL
~~~
Path: ``debug_toolbar.panels.sql.SQLPanel``
SQL queries including time to execute and links to EXPLAIN each query.
Template
~~~~~~~~
Path: ``debug_toolbar.panels.templates.TemplatesPanel``
Templates and context used, and their template paths.
Static files
~~~~~~~~~~~~
Path: ``debug_toolbar.panels.staticfiles.StaticFilesPanel``
Used static files and their locations (via the staticfiles finders).
Cache
~~~~~
Path: ``debug_toolbar.panels.cache.CachePanel``
Cache queries. Is incompatible with Django's per-site caching.
Signal
~~~~~~
Path: ``debug_toolbar.panels.signals.SignalsPanel``
List of signals, their args and receivers.
Logging
~~~~~~~
Path: ``debug_toolbar.panels.logging.LoggingPanel``
Logging output via Python's built-in :mod:`logging` module.
Redirects
~~~~~~~~~
Path: ``debug_toolbar.panels.redirects.RedirectsPanel``
When this panel is enabled, the debug toolbar will show an intermediate page
upon redirect so you can view any debug information prior to redirecting. This
page will provide a link to the redirect destination you can follow when
ready.
Since this behavior is annoying when you aren't debugging a redirect, this
panel is included but inactive by default. You can activate it by default with
the ``DISABLE_PANELS`` configuration option.
Non-default built-in panels
---------------------------
The following panels are disabled by default. You must add them to the
``DEBUG_TOOLBAR_PANELS`` setting to enable them.
.. _profiling-panel:
Profiling
~~~~~~~~~
Path: ``debug_toolbar.panels.profiling.ProfilingPanel``
Profiling information for the processing of the request.
If the ``debug_toolbar.middleware.DebugToolbarMiddleware`` is first in
``MIDDLEWARE_CLASSES`` then the other middlewares' ``process_view`` methods
will not be executed. This is because ``ProfilingPanel.process_view`` will
return a ``HttpResponse`` which causes the other middlewares'
``process_view`` methods to be skipped.
Note that the quick setup creates this situation, as it inserts
``DebugToolbarMiddleware`` first in ``MIDDLEWARE_CLASSES``.
If you run into this issues, then you should either disable the
``ProfilingPanel`` or move ``DebugToolbarMiddleware`` to the end of
``MIDDLEWARE_CLASSES``. If you do the latter, then the debug toolbar won't
track the execution of other middleware.
Third-party panels
------------------
.. note:: Third-party panels aren't officially supported!
The authors of the Django Debug Toolbar maintain a list of third-party
panels, but they can't vouch for the quality of each of them. Please
report bugs to their authors.
If you'd like to add a panel to this list, please submit a pull request!
Flamegraph
~~~~~~~~~~
URL: https://github.com/23andMe/djdt-flamegraph
Path: ``djdt_flamegraph.FlamegraphPanel``
Generates a flame graph from your current request.
Haystack
~~~~~~~~
URL: https://github.com/streeter/django-haystack-panel
Path: ``haystack_panel.panel.HaystackDebugPanel``
See queries made by your Haystack_ backends.
.. _Haystack: http://haystacksearch.org/
HTML Tidy/Validator
~~~~~~~~~~~~~~~~~~~
URL: https://github.com/joymax/django-dtpanel-htmltidy
Path: ``debug_toolbar_htmltidy.panels.HTMLTidyDebugPanel``
HTML Tidy or HTML Validator is a custom panel that validates your HTML and
displays warnings and errors.
Inspector
~~~~~~~~~
URL: https://github.com/santiagobasulto/debug-inspector-panel
Path: ``inspector_panel.panels.inspector.InspectorPanel``
Retrieves and displays information you specify using the ``debug`` statement.
Inspector panel also logs to the console by default, but may be instructed not
to.
Line Profiler
~~~~~~~~~~~~~
URL: https://github.com/dmclain/django-debug-toolbar-line-profiler
Path: ``debug_toolbar_line_profiler.panel.ProfilingPanel``
This package provides a profiling panel that incorporates output from
line_profiler_.
.. _line_profiler: https://github.com/rkern/line_profiler
Memcache
~~~~~~~~
URL: https://github.com/ross/memcache-debug-panel
Path: ``memcache_toolbar.panels.memcache.MemcachePanel`` or ``memcache_toolbar.panels.pylibmc.PylibmcPanel``
This panel tracks memcached usage. It currently supports both the pylibmc and
memcache libraries.
MongoDB
~~~~~~~
URL: https://github.com/hmarr/django-debug-toolbar-mongo
Path: ``debug_toolbar_mongo.panel.MongoDebugPanel``
Adds MongoDB debugging information.
Neo4j
~~~~~
URL: https://github.com/robinedwards/django-debug-toolbar-neo4j-panel
Path: ``neo4j_panel.Neo4jPanel``
Trace neo4j rest API calls in your django application, this also works for neo4django and neo4jrestclient, support for py2neo is on its way.
Pympler
~~~~~~~
URL: https://pythonhosted.org/Pympler/django.html
Path: ``pympler.panels.MemoryPanel``
Shows process memory information (virtual size, resident set size) and model instances for the current request.
Request History
~~~~~~~~~~~~~~~
URL: https://github.com/djsutho/django-debug-toolbar-request-history
Path: ``ddt_request_history.panels.request_history.RequestHistoryPanel``
Switch between requests to view their stats. Also adds support for viewing stats for ajax requests.
Sites
~~~~~
URL: https://github.com/elvard/django-sites-toolbar
Path: ``sites_toolbar.panels.SitesDebugPanel``
Browse Sites registered in ``django.contrib.sites`` and switch between them.
Useful to debug project when you use `django-dynamicsites
<https://bitbucket.org/uysrc/django-dynamicsites/src>`_ which sets SITE_ID
dynamically.
Template Profiler
~~~~~~~~~~~~~~~~~
URL: https://github.com/node13h/django-debug-toolbar-template-profiler
Path: ``template_profiler_panel.panels.template.TemplateProfilerPanel``
Shows template render call duration and distribution on the timeline. Lightweight.
Compatible with WSGI servers which reuse threads for multiple requests (Werkzeug).
Template Timings
~~~~~~~~~~~~~~~~
URL: https://github.com/orf/django-debug-toolbar-template-timings
Path: ``template_timings_panel.panels.TemplateTimings.TemplateTimings``
Displays template rendering times for your Django application.
User
~~~~
URL: https://github.com/playfire/django-debug-toolbar-user-panel
Path: ``debug_toolbar_user_panel.panels.UserPanel``
Easily switch between logged in users, see properties of current user.
VCS Info
~~~~~~~~
URL: https://github.com/giginet/django-debug-toolbar-vcs-info
Path: ``vcs_info_panel.panels.GitInfoPanel``
Displays VCS status (revision, branch, latest commit log and more) of your Django application.
uWSGI Stats
~~~~~~~~~~~
URL: https://github.com/unbit/django-uwsgi
Path: ``django_uwsgi.panels.UwsgiPanel``
Displays uWSGI stats (workers, applications, spooler jobs and more).
API for third-party panels
--------------------------
Third-party panels must subclass :class:`~debug_toolbar.panels.Panel`,
according to the public API described below. Unless noted otherwise, all
methods are optional.
Panels can ship their own templates, static files and views. All views should
be decorated with ``debug_toolbar.decorators.require_show_toolbar`` to prevent
unauthorized access. There is no public CSS API at this time.
.. autoclass:: debug_toolbar.panels.Panel(*args, **kwargs)
.. autoattribute:: debug_toolbar.panels.Panel.nav_title
.. autoattribute:: debug_toolbar.panels.Panel.nav_subtitle
.. autoattribute:: debug_toolbar.panels.Panel.has_content
.. autoattribute:: debug_toolbar.panels.Panel.title
.. autoattribute:: debug_toolbar.panels.Panel.template
.. autoattribute:: debug_toolbar.panels.Panel.content
.. automethod:: debug_toolbar.panels.Panel.get_urls
.. automethod:: debug_toolbar.panels.Panel.enable_instrumentation
.. automethod:: debug_toolbar.panels.Panel.disable_instrumentation
.. automethod:: debug_toolbar.panels.Panel.record_stats
.. automethod:: debug_toolbar.panels.Panel.get_stats
.. automethod:: debug_toolbar.panels.Panel.process_request
.. automethod:: debug_toolbar.panels.Panel.process_view
.. automethod:: debug_toolbar.panels.Panel.process_response
.. automethod:: debug_toolbar.panels.Panel.generate_stats
.. _javascript-api:
JavaScript API
~~~~~~~~~~~~~~
Panel templates should include any JavaScript files they need. There are a few
common methods available, as well as the toolbar's version of jQuery.
.. js:function:: djdt.close
Triggers the event to close any active panels.
.. js:function:: djdt.cookie.get
This is a helper function to fetch values stored in the cookies.
:param string key: The key for the value to be fetched.
.. js:function:: djdt.cookie.set
This is a helper function to set a value stored in the cookies.
:param string key: The key to be used.
:param string value: The value to be set.
:param Object options: The options for the value to be set. It should contain
the properties ``expires`` and ``path``.
.. js:function:: djdt.hide_toolbar
Closes any panels and hides the toolbar.
.. js:function:: djdt.jQuery
This is the toolbar's version of jQuery.
.. js:function:: djdt.show_toolbar
Shows the toolbar.
|