aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Gaynor2009-08-11 13:33:03 -0500
committerAlex Gaynor2009-08-11 13:33:03 -0500
commit89a0b38316e1822bf22a4f013a6bb12f9db585b8 (patch)
treee869b25e9ca66c29a8c75179e7a1ed4e75a8cabf
parent90681f01b4ba3261fb1a44559dc0ada539249719 (diff)
downloaddjango-debug-toolbar-89a0b38316e1822bf22a4f013a6bb12f9db585b8.tar.bz2
allow for handling the pathological case of an insanely large template context
-rw-r--r--README.rst5
-rw-r--r--debug_toolbar/panels/template.py19
-rw-r--r--debug_toolbar/templates/debug_toolbar/panels/templates.html10
3 files changed, 21 insertions, 13 deletions
diff --git a/README.rst b/README.rst
index 60aa8d0..79b224a 100644
--- a/README.rst
+++ b/README.rst
@@ -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 %}