From 30180ec9a3d82752e309f5d0f9c685dec097e40d Mon Sep 17 00:00:00 2001
From: Aymeric Augustin
Date: Fri, 1 Nov 2013 13:35:56 +0100
Subject: Add response headers to the Headers panel.
---
 debug_toolbar/panels/headers.py                    | 10 ++++++----
 .../templates/debug_toolbar/panels/headers.html    | 23 ++++++++++++++++++++--
 docs/installation.rst                              |  7 ++++---
 docs/panels.rst                                    | 11 ++++++++---
 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 %}
 
-
{% trans "HTTP Headers" %}
+{% trans "Request Headers" %}
 
 
 	
@@ -10,7 +10,26 @@
 		
 	
 	
-		{% for key, value in headers.items %}
+		{% for key, value in request_headers.items %}
+			
+				| {{ key|escape }}+ | {{ value|escape }}+ | 
+		{% endfor %}
+	
+
+
+{% trans "Response Headers" %}
+
+
+	
+		
+			| {% trans "Key" %}+ | {% trans "Value" %}+ | 
+	
+	
+		{% for key, value in response_headers.items %}
 			
 				| {{ key|escape }} | {{ value|escape }}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'
-- 
cgit v1.2.3 |