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