![]()  | 
| django debug toolbar | 
debugging:
- It is the process of locating and correcting the errors in a computer program or code.
 - debugging is an integral part of software testing.
 - debugging improves code quality and eases the maintainability of a software.
 
debugging tool:
- A debugging tool is comprised of one or more computer programs that are used to locate the errors in other programs.
 
django debug toolbar:
- It is one of the best debugging tools for the django applications.
 - debug toolbar makes developer life simple. Developer need not to worry about common lookups like settings, request data, etc.
 - By using this tool we can quickly find out the error location. It helps developers to keep headache away.
 
tools provided by debug toolbar:
versions:
- It provides the information of packages that are used in our django application.
 - It lists out package, package name and package version.
 - In some cases we need to have a specific version of a package but we may use advanced version of the package. We may get errors by using toolbar we can quickly have a look on it.
 - example: wee need djcelery==2.9.1 but we used djcelery==3.2.1
 
time:
- It helps to use our system resources(CPU) effectively.
 - It lists out the time used by each resource(user CPU time, System CPU time, etc) in milli seconds.
 - It also provides the timing browser when our web page is loaded.
 - It provides the time information like domain lookup, connect, request, response, DOM loading, DOM ContentLoadedEvent, load event.
 
Settings:
- It quickly lists out our django project settings in a tabular format.
 - We need not go to the ide/editor to see project settings.
 
Headers:
- It summaries the information of HTTP request.
 - It provides information of headers sent in the HTTP request as well as headers received in the HTTP response.
 - In some cases we need to send authentication information like tokens in HTTP request headers.
 - It helps us to check whether we sent authentication token in headers or not.
 
Request:
- It contains the information of view, session data, cookies, GET data, POST data
 - By using this we can quickly navigate to the respective view
 - And also can be able to see data handled by the request
 
SQL:
- It shows the number of queries executed on a page and time taken each query in milliseconds.
 - It also shows the django equivalent of raw SQL.
 - Reduce the number of queries to improve the application performance.
 
Static files:
- It lists the static files and paths of static files for quick navigation.
 
Templates:
- It shows template directory paths
 - It also lists out the templates used in creating the response.
 - It helps us for quick navigation to a template.
 
Cache:
- It summaries the cache of our django application
 
Signals:
- It lists out the signals and receivers used in the page rendering.
 - It helps if we write custom signals or receivers.
 
Logging:
- It shows  logging messages information
 
- It shows  logging messages information
 
How to use django debug toolbar ?
add the below code at the end of the settings file.
settings.py
if DEBUG:
    MIDDLEWARE_CLASSES = MIDDLEWARE_CLASSES + [
        'debug_toolbar.middleware.DebugToolbarMiddleware',
    ]
    INSTALLED_APPS = INSTALLED_APPS + [
        'debug_toolbar',
    ]
    INTERNAL_IPS = ('127.0.0.1', )
    DEBUG_TOOLBAR_CONFIG = {
        'INTERCEPT_REDIRECTS': False,
    }
add the below code at the end of the project urls file. 
urls.py  
if settings.DEBUG:
    import debug_toolbar
    urlpatterns += [
        url(r'^__debug__/', include(debug_toolbar.urls)),
    ]
 debugging Django django-debug-toolbar optimization performace
