diff options
| author | Alex Gaynor | 2009-08-11 13:33:03 -0500 | 
|---|---|---|
| committer | Alex Gaynor | 2009-08-11 13:33:03 -0500 | 
| commit | 89a0b38316e1822bf22a4f013a6bb12f9db585b8 (patch) | |
| tree | e869b25e9ca66c29a8c75179e7a1ed4e75a8cabf | |
| parent | 90681f01b4ba3261fb1a44559dc0ada539249719 (diff) | |
| download | django-debug-toolbar-89a0b38316e1822bf22a4f013a6bb12f9db585b8.tar.bz2 | |
allow for handling the pathological case of an insanely large template context
| -rw-r--r-- | README.rst | 5 | ||||
| -rw-r--r-- | debug_toolbar/panels/template.py | 19 | ||||
| -rw-r--r-- | debug_toolbar/templates/debug_toolbar/panels/templates.html | 10 | 
3 files changed, 21 insertions, 13 deletions
| @@ -104,6 +104,11 @@ The debug toolbar has two settings that can be set in `settings.py`:     * `HIDE_DJANGO_SQL`: If set to True (the default) then code in Django itself       won't be show in SQL stacktraces. +   * `SHOW_TEMPLATE_CONTEXT`: If set to True (the default) then a template's +     context will be included with it in the Template debug panel.  Turning this +     off is useful when you have large template contexts, or you have template +     contexts with lazy datastructures that you don't want to be evaluated. +     Example configuration::  	def custom_show_toolbar(request): diff --git a/debug_toolbar/panels/template.py b/debug_toolbar/panels/template.py index ad6dd04..e99b9c5 100644 --- a/debug_toolbar/panels/template.py +++ b/debug_toolbar/panels/template.py @@ -73,15 +73,16 @@ class TemplateDebugPanel(DebugPanel):                  t.origin_name = 'No origin'              info['template'] = t              # Clean up context for better readability -            c = d.get('context', None) -             -            d_list = [] -            for _d in c.dicts: -                try: -                    d_list.append(pformat(d)) -                except UnicodeEncodeError: -                    pass -            info['context'] = '\n'.join(d_list) +            if getattr(settings, 'DEBUG_TOOLBAR_CONFIG', {}).get('SHOW_TEMPLATE_CONTEXT', True): +                c = d.get('context', None) + +                d_list = [] +                for _d in c.dicts: +                    try: +                        d_list.append(pformat(d)) +                    except UnicodeEncodeError: +                        pass +                info['context'] = '\n'.join(d_list)              template_context.append(info)          context = {              'templates': template_context, diff --git a/debug_toolbar/templates/debug_toolbar/panels/templates.html b/debug_toolbar/templates/debug_toolbar/panels/templates.html index 6c918b1..e54c951 100644 --- a/debug_toolbar/templates/debug_toolbar/panels/templates.html +++ b/debug_toolbar/templates/debug_toolbar/panels/templates.html @@ -14,10 +14,12 @@  {% for template in templates %}  	<dt><strong><a class="remoteCall" href="/__debug__/template_source/?template={{ template.template.name }}">{{ template.template.name|addslashes }}</a></strong></dt>  	<dd><samp>{{ template.template.origin_name|addslashes }}</samp></dd> -	<dd> -		<div class="djTemplateShowContextDiv"><a class="djTemplateShowContext">Toggle Context</a></div> -		<div class="djTemplateHideContextDiv" style="display:none;"><pre>{{ template.context }}</pre></div> -	</dd> +	{% if template.context %} +	    <dd> +		    <div class="djTemplateShowContextDiv"><a class="djTemplateShowContext">Toggle Context</a></div> +		    <div class="djTemplateHideContextDiv" style="display:none;"><pre>{{ template.context }}</pre></div> +	    </dd> +	{% endif %}  {% endfor %}  </dl>  {% else %} | 
