diff options
| author | Aymeric Augustin | 2013-11-01 13:35:56 +0100 | 
|---|---|---|
| committer | Aymeric Augustin | 2013-11-01 13:35:56 +0100 | 
| commit | 30180ec9a3d82752e309f5d0f9c685dec097e40d (patch) | |
| tree | c04327311efbaa51d324e9564bc7199671e19652 | |
| parent | 842ed8a0e9d4e4ccadd6114147f8e2805b0a251c (diff) | |
| download | django-debug-toolbar-30180ec9a3d82752e309f5d0f9c685dec097e40d.tar.bz2 | |
Add response headers to the Headers panel.
| -rw-r--r-- | debug_toolbar/panels/headers.py | 10 | ||||
| -rw-r--r-- | debug_toolbar/templates/debug_toolbar/panels/headers.html | 23 | ||||
| -rw-r--r-- | docs/installation.rst | 7 | ||||
| -rw-r--r-- | docs/panels.rst | 11 | ||||
| -rw-r--r-- | example/settings.py | 2 | 
5 files changed, 40 insertions, 13 deletions
| diff --git a/debug_toolbar/panels/headers.py b/debug_toolbar/panels/headers.py index de47c0e..38b5ac3 100644 --- a/debug_toolbar/panels/headers.py +++ b/debug_toolbar/panels/headers.py @@ -46,16 +46,18 @@ class HeaderDebugPanel(DebugPanel):      def process_request(self, request):          wsgi_env = list(sorted(request.META.items())) -        self.headers = OrderedDict( +        self.request_headers = OrderedDict(              (unmangle(k), v) for (k, v) in wsgi_env if k.startswith('HTTP_')) -        if 'Cookie' in self.headers: -            self.headers['Cookie'] = '<< see Request Vars panel >>' +        if 'Cookie' in self.request_headers: +            self.request_headers['Cookie'] = '=> see Request Vars panel'          self.environ = OrderedDict(              (k, v) for (k, v) in wsgi_env if k in self.environ_filter)      def process_response(self, request, response): +        self.response_headers = OrderedDict(sorted(response.items()))          self.record_stats({ -            'headers': self.headers, +            'request_headers': self.request_headers, +            'response_headers': self.response_headers,              'environ': self.environ,          }) diff --git a/debug_toolbar/templates/debug_toolbar/panels/headers.html b/debug_toolbar/templates/debug_toolbar/panels/headers.html index 6b057e9..c7f01a2 100644 --- a/debug_toolbar/templates/debug_toolbar/panels/headers.html +++ b/debug_toolbar/templates/debug_toolbar/panels/headers.html @@ -1,6 +1,6 @@  {% load i18n %} -<h4>{% trans "HTTP Headers" %}</h4> +<h4>{% trans "Request Headers" %}</h4>  <table>  	<thead> @@ -10,7 +10,26 @@  		</tr>  	</thead>  	<tbody> -		{% for key, value in headers.items %} +		{% for key, value in request_headers.items %} +			<tr class="{% cycle 'djDebugOdd' 'djDebugEven' %}"> +				<td>{{ key|escape }}</td> +				<td>{{ value|escape }}</td> +			</tr> +		{% endfor %} +	</tbody> +</table> + +<h4>{% trans "Response Headers" %}</h4> + +<table> +	<thead> +		<tr> +			<th>{% trans "Key" %}</th> +			<th>{% trans "Value" %}</th> +		</tr> +	</thead> +	<tbody> +		{% for key, value in response_headers.items %}  			<tr class="{% cycle 'djDebugOdd' 'djDebugEven' %}">  				<td>{{ key|escape }}</td>  				<td>{{ value|escape }}</td> diff --git a/docs/installation.rst b/docs/installation.rst index 1e228cb..32483df 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -28,9 +28,10 @@ Installation     Tying into middleware allows each panel to be instantiated on request and     rendering to happen on response. -   The order of ``MIDDLEWARE_CLASSES`` is important: the Debug Toolbar -   middleware must come after any other middleware that encodes the -   response's content (such as GZipMiddleware). +   The order of ``MIDDLEWARE_CLASSES`` is important. You should include the +   Debug Toolbar middleware as early as possible in the list. However, it must +   come after any other middleware that encodes the response's content, such +   as ``GZipMiddleware``.     .. note:: diff --git a/docs/panels.rst b/docs/panels.rst index a4b809e..b5b7b2e 100644 --- a/docs/panels.rst +++ b/docs/panels.rst @@ -30,12 +30,17 @@ Path: ``debug_toolbar.panels.settings_vars.SettingsVarsDebugPanel``  A list of settings in settings.py. -Header -~~~~~~ +Headers +~~~~~~~  Path: ``debug_toolbar.panels.headers.HeaderDebugPanel`` -Common HTTP headers. +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  ~~~~~~~ diff --git a/example/settings.py b/example/settings.py index 4df22a0..ce1f8e2 100644 --- a/example/settings.py +++ b/example/settings.py @@ -28,13 +28,13 @@ INSTALLED_APPS = (  )  MIDDLEWARE_CLASSES = ( +    'debug_toolbar.middleware.DebugToolbarMiddleware',      'django.contrib.sessions.middleware.SessionMiddleware',      'django.middleware.common.CommonMiddleware',      'django.middleware.csrf.CsrfViewMiddleware',      'django.contrib.auth.middleware.AuthenticationMiddleware',      'django.contrib.messages.middleware.MessageMiddleware',      'django.middleware.clickjacking.XFrameOptionsMiddleware', -    'debug_toolbar.middleware.DebugToolbarMiddleware',  )  ROOT_URLCONF = 'example.urls' | 
