diff options
Diffstat (limited to 'debug_toolbar')
| -rw-r--r-- | debug_toolbar/panels/headers.py | 47 | ||||
| -rw-r--r-- | debug_toolbar/templates/debug_toolbar/panels/headers.html | 24 |
2 files changed, 52 insertions, 19 deletions
diff --git a/debug_toolbar/panels/headers.py b/debug_toolbar/panels/headers.py index 4a10b5f..de47c0e 100644 --- a/debug_toolbar/panels/headers.py +++ b/debug_toolbar/panels/headers.py @@ -1,5 +1,9 @@ from __future__ import unicode_literals +try: + from collections import OrderedDict +except ImportError: + from django.utils.datastructures import SortedDict as OrderedDict from django.utils.translation import ugettext_lazy as _ from debug_toolbar.panels import DebugPanel @@ -11,20 +15,15 @@ class HeaderDebugPanel(DebugPanel): name = 'Header' template = 'debug_toolbar/panels/headers.html' has_content = True - # List of headers we want to display - header_filter = ( + # List of environment variables we want to display + environ_filter = set(( + 'CONTENT_LENGTH', 'CONTENT_TYPE', - 'HTTP_ACCEPT', - 'HTTP_ACCEPT_CHARSET', - 'HTTP_ACCEPT_ENCODING', - 'HTTP_ACCEPT_LANGUAGE', - 'HTTP_CACHE_CONTROL', - 'HTTP_CONNECTION', - 'HTTP_HOST', - 'HTTP_KEEP_ALIVE', - 'HTTP_REFERER', - 'HTTP_USER_AGENT', + 'DJANGO_SETTINGS_MODULE', + 'GATEWAY_INTERFACE', 'QUERY_STRING', + 'PATH_INFO', + 'PYTHONPATH', 'REMOTE_ADDR', 'REMOTE_HOST', 'REQUEST_METHOD', @@ -33,23 +32,33 @@ class HeaderDebugPanel(DebugPanel): 'SERVER_PORT', 'SERVER_PROTOCOL', 'SERVER_SOFTWARE', - ) + 'TZ', + )) def nav_title(self): - return _('HTTP Headers') + return _('Headers') def title(self): - return _('HTTP Headers') + return _('Headers') def url(self): return '' def process_request(self, request): - self.headers = dict( - [(k, request.META[k]) for k in self.header_filter if k in request.META] - ) + wsgi_env = list(sorted(request.META.items())) + self.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 >>' + self.environ = OrderedDict( + (k, v) for (k, v) in wsgi_env if k in self.environ_filter) def process_response(self, request, response): self.record_stats({ - 'headers': self.headers + 'headers': self.headers, + 'environ': self.environ, }) + + +def unmangle(wsgi_key): + return wsgi_key[5:].replace('_', '-').title() diff --git a/debug_toolbar/templates/debug_toolbar/panels/headers.html b/debug_toolbar/templates/debug_toolbar/panels/headers.html index 981b847..6b057e9 100644 --- a/debug_toolbar/templates/debug_toolbar/panels/headers.html +++ b/debug_toolbar/templates/debug_toolbar/panels/headers.html @@ -1,4 +1,7 @@ {% load i18n %} + +<h4>{% trans "HTTP Headers" %}</h4> + <table> <thead> <tr> @@ -15,3 +18,24 @@ {% endfor %} </tbody> </table> + +<h4>{% trans "WSGI environ" %}</h4> + +<p>{% trans "Since the WSGI environ inherits the environment of the server, only a subset is shown below." %}</p> + +<table> + <thead> + <tr> + <th>{% trans "Key" %}</th> + <th>{% trans "Value" %}</th> + </tr> + </thead> + <tbody> + {% for key, value in environ.items %} + <tr class="{% cycle 'djDebugOdd' 'djDebugEven' %}"> + <td>{{ key|escape }}</td> + <td>{{ value|escape }}</td> + </tr> + {% endfor %} + </tbody> +</table> |
