aboutsummaryrefslogtreecommitdiffstats
path: root/debug_toolbar/panels/template.py
diff options
context:
space:
mode:
authorTomasz Buchert2011-09-26 00:03:47 +0200
committerTomasz Buchert2011-09-26 00:03:47 +0200
commit01b5d65a1da80f3cc6120e53bba46e4da2ff44ca (patch)
tree817fea74904193293f0e77136b169b3bae37a316 /debug_toolbar/panels/template.py
parent5a3813d2bb4fb63d66b1b8a13edb8354b36a28b4 (diff)
downloaddjango-debug-toolbar-01b5d65a1da80f3cc6120e53bba46e4da2ff44ca.tar.bz2
Issue 187: queries are captured and not executed when template panel is rendered.
Diffstat (limited to 'debug_toolbar/panels/template.py')
-rw-r--r--debug_toolbar/panels/template.py15
1 files changed, 14 insertions, 1 deletions
diff --git a/debug_toolbar/panels/template.py b/debug_toolbar/panels/template.py
index d620a38..ff8cd15 100644
--- a/debug_toolbar/panels/template.py
+++ b/debug_toolbar/panels/template.py
@@ -7,7 +7,9 @@ from django.template.context import get_standard_processors
from django.template.loader import render_to_string
from django.test.signals import template_rendered
from django.utils.translation import ugettext_lazy as _
+from django.db.models.query import QuerySet
from debug_toolbar.panels import DebugPanel
+from debug_toolbar.utils.tracking.db import recording, SQLQueryTriggered
# Code taken and adapted from Simon Willison and Django Snippets:
# http://www.djangosnippets.org/snippets/766/
@@ -66,8 +68,19 @@ class TemplateDebugPanel(DebugPanel):
# Replace LANGUAGES, which is available in i18n context processor
elif key == 'LANGUAGES' and isinstance(value, tuple):
temp_layer[key] = '<<languages>>'
+ # QuerySet would trigger the database: user can run the query from SQL Panel
+ elif isinstance(value, QuerySet):
+ temp_layer[key] = '<<queryset>>'
else:
- temp_layer[key] = value
+ try:
+ recording(False)
+ pformat(value) # this MAY trigger a db query
+ except SQLQueryTriggered:
+ temp_layer[key] = '<<contains queryset>>'
+ else:
+ temp_layer[key] = value
+ finally:
+ recording(True)
try:
context_list.append(pformat(temp_layer))
except UnicodeEncodeError: