mirror of
https://github.com/django/django.git
synced 2024-12-23 01:25:58 +00:00
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
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import itertools
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.middleware.csrf import get_token
|
from django.middleware.csrf import get_token
|
||||||
from django.utils.encoding import smart_text
|
from django.utils.encoding import smart_text
|
||||||
@ -40,10 +42,13 @@ def debug(request):
|
|||||||
context_extras = {}
|
context_extras = {}
|
||||||
if settings.DEBUG and request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS:
|
if settings.DEBUG and request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS:
|
||||||
context_extras['debug'] = True
|
context_extras['debug'] = True
|
||||||
from django.db import connection
|
from django.db import connections
|
||||||
# Return a lazy reference that computes connection.queries on access,
|
# Return a lazy reference that computes connection.queries on access,
|
||||||
# to ensure it contains queries triggered after this function runs.
|
# 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
|
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.
|
you're in :setting:`DEBUG` mode.
|
||||||
* ``sql_queries`` -- A list of ``{'sql': ..., 'time': ...}`` dictionaries,
|
* ``sql_queries`` -- A list of ``{'sql': ..., 'time': ...}`` dictionaries,
|
||||||
representing every SQL query that has happened so far during the request
|
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
|
and how long it took. The list is in order by database alias and then by
|
||||||
on access.
|
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``
|
``django.template.context_processors.i18n``
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
@ -414,6 +414,9 @@ Templates
|
|||||||
* Allowed :tfilter:`dictsort` to order a list of lists by an element at a
|
* Allowed :tfilter:`dictsort` to order a list of lists by an element at a
|
||||||
specified index.
|
specified index.
|
||||||
|
|
||||||
|
* The :func:`~django.template.context_processors.debug` context processor
|
||||||
|
contains queries for all database aliases instead of only the default alias.
|
||||||
|
|
||||||
Tests
|
Tests
|
||||||
~~~~~
|
~~~~~
|
||||||
|
|
||||||
|
@ -12,4 +12,8 @@ Second query list: {{ sql_queries|length }}
|
|||||||
|
|
||||||
Third 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 %}
|
{% endif %}
|
||||||
|
@ -87,3 +87,5 @@ class DebugContextProcessorTests(TestCase):
|
|||||||
self.assertContains(response, 'Second query list: 1')
|
self.assertContains(response, 'Second query list: 1')
|
||||||
# Check we have not actually memoized connection.queries
|
# Check we have not actually memoized connection.queries
|
||||||
self.assertContains(response, 'Third query list: 2')
|
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):
|
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)
|
return render(request, 'context_processors/debug.html', context)
|
||||||
|
Loading…
Reference in New Issue
Block a user