Fixed #26145 -- Made debug context processor return queries for all databases.
This commit is contained in:
parent
9e3f141701
commit
03e1cc930c
|
@ -9,6 +9,8 @@ of a DjangoTemplates backend and used by RequestContext.
|
|||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import itertools
|
||||
|
||||
from django.conf import settings
|
||||
from django.middleware.csrf import get_token
|
||||
from django.utils.encoding import smart_text
|
||||
|
@ -40,10 +42,13 @@ def debug(request):
|
|||
context_extras = {}
|
||||
if settings.DEBUG and request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS:
|
||||
context_extras['debug'] = True
|
||||
from django.db import connection
|
||||
from django.db import connections
|
||||
# Return a lazy reference that computes connection.queries on access,
|
||||
# to ensure it contains queries triggered after this function runs.
|
||||
context_extras['sql_queries'] = lazy(lambda: connection.queries, list)
|
||||
context_extras['sql_queries'] = lazy(
|
||||
lambda: list(itertools.chain(*[connections[x].queries for x in connections])),
|
||||
list
|
||||
)
|
||||
return context_extras
|
||||
|
||||
|
||||
|
|
|
@ -699,8 +699,13 @@ the request's IP address (``request.META['REMOTE_ADDR']``) is in the
|
|||
you're in :setting:`DEBUG` mode.
|
||||
* ``sql_queries`` -- A list of ``{'sql': ..., 'time': ...}`` dictionaries,
|
||||
representing every SQL query that has happened so far during the request
|
||||
and how long it took. The list is in order by query and lazily generated
|
||||
on access.
|
||||
and how long it took. The list is in order by database alias and then by
|
||||
query. It's lazily generated on access.
|
||||
|
||||
.. versionchanged:: 1.10
|
||||
|
||||
In older versions, only the queries for the default database alias were
|
||||
included.
|
||||
|
||||
``django.template.context_processors.i18n``
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
|
|
@ -414,6 +414,9 @@ Templates
|
|||
* Allowed :tfilter:`dictsort` to order a list of lists by an element at a
|
||||
specified index.
|
||||
|
||||
* The :func:`~django.template.context_processors.debug` context processor
|
||||
contains queries for all database aliases instead of only the default alias.
|
||||
|
||||
Tests
|
||||
~~~~~
|
||||
|
||||
|
|
|
@ -12,4 +12,8 @@ Second query list: {{ sql_queries|length }}
|
|||
|
||||
Third query list: {{ sql_queries|length }}
|
||||
|
||||
{% for obj in other_debug_objects.all %}{{ obj }}{% endfor %}
|
||||
|
||||
Fourth query list: {{ sql_queries|length }}
|
||||
|
||||
{% endif %}
|
||||
|
|
|
@ -87,3 +87,5 @@ class DebugContextProcessorTests(TestCase):
|
|||
self.assertContains(response, 'Second query list: 1')
|
||||
# Check we have not actually memoized connection.queries
|
||||
self.assertContains(response, 'Third query list: 2')
|
||||
# Check queries for DB connection 'other'
|
||||
self.assertContains(response, 'Fourth query list: 3')
|
||||
|
|
|
@ -8,5 +8,8 @@ def request_processor(request):
|
|||
|
||||
|
||||
def debug_processor(request):
|
||||
context = {'debug_objects': DebugObject.objects}
|
||||
context = {
|
||||
'debug_objects': DebugObject.objects,
|
||||
'other_debug_objects': DebugObject.objects.using('other'),
|
||||
}
|
||||
return render(request, 'context_processors/debug.html', context)
|
||||
|
|
Loading…
Reference in New Issue