Django Debug Toolbar не отображает SQL - PullRequest
9 голосов
/ 27 июля 2011

Я недавно установил django-debug-toolbar. Панель инструментов работает, и я вижу вкладки сбоку. Однако на вкладке SQL ничего не отображается, даже когда я явно выполнил запрос SQL (например, в админке): enter image description here

Мои настройки следующие:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2'
        'NAME': 'mydatabase'
         ....
    }
}

# Backwards compatability with apps
DATABASE_ENGINE = DATABASES['default']['ENGINE'].split('.')[-1]
DATABASE_NAME = DATABASES['default']['NAME']

MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware',
)

INSTALLED_APPS = (
    ...
    'debug_toolbar',
    ...
)

# Settings for the django-debug-toolbar
DEBUG_TOOLBAR_PANELS = (
    'debug_toolbar.panels.version.VersionDebugPanel',
    'debug_toolbar.panels.cache.CacheDebugPanel',
    'debug_toolbar.panels.timer.TimerDebugPanel',
    'debug_toolbar.panels.settings_vars.SettingsVarsDebugPanel',
    'debug_toolbar.panels.headers.HeaderDebugPanel',
    'debug_toolbar.panels.request_vars.RequestVarsDebugPanel',
    'debug_toolbar.panels.template.TemplateDebugPanel',
    'debug_toolbar.panels.sql.SQLDebugPanel',
    'debug_toolbar.panels.signals.SignalDebugPanel',
    # 'debug_toolbar.panels.logger.LoggingPanel',
)

def custom_show_toolbar(request):
    return request.user.is_staff

DEBUG_TOOLBAR_CONFIG = {
    'INTERCEPT_REDIRECTS':False,
    'SHOW_TOOLBAR_CALLBACK':custom_show_toolbar,
    'SHOW_TEMPLATE_CONTEXT':True,
    'HIDE_DJANGO_SQL':False,
}

Я использую Django 1.3 с Панелью инструментов версии 0.8.5. Любая помощь с этой проблемой была бы потрясающей ...

Edit: Основываясь на ответе, я решил опубликовать описание своих функций просмотра:

def func1(query, var1):
    query = query.filter(var__icontains=var1)
    return query

def func2(query, var2):
    query = query.filter(var__icontains=var2)
    return query

def parse(**kwargs):
    # Based on some logic call func1 and func2
    return query

def view(request, template="display.html"):
    # Do some request processing
    query = parse(request.GET.items())
    return render(request, template, { 'items':list(query) })

Ответы [ 5 ]

6 голосов
/ 27 июля 2011

Убедитесь, что вы запускаете SQL в том же потоке, который обработал запрос.

Панель инструментов отладки Django, похоже, рассматривает только те операторы SQL, которые выполняются в текущем потоке, и предполагает, что они единственные, которые связаны с обработанным запросом.

4 голосов
/ 23 августа 2011

У меня та же проблема, и я нашел решение в моем случае.Я использую Python 2.5 в Windows Vista.Есть 2 проблемы.

Во-первых, функция «format», поддерживаемая в python 2.6, используется в модуле debug_toolbar.panels.sql.Я исправил это с помощью оператора «%» (строка 194).

stacktrace.append('<span class="path">%s/</span><span class="file">%s</span> in <span class="func">%s</span>(<span class="lineno">%s</span>)\n <span class="code">%s</span>"' % (params[0], params[1], params[3], params[2], params[4]))

Во-вторых, в том же модуле символ «/» используется как символ разделения.Из-за этого он не работает на Windows.Я изменил характер разделения, и все прошло хорошо.

2 голосов
/ 12 сентября 2012

Я просто найду способ:

  • щелкните правой кнопкой мыши элемент «default»
  • щелкните элемент проверки
  • найдите ближайшую таблицу с отображением style = ": none "
  • отредактируйте атрибут style, чтобы удалить его

Я не знаю, зачем мне все это делать ...

1 голос
/ 12 августа 2015

Это сработало для меня:

pip install django-debug-toolbar==0.9.4

Также убедитесь:

  • DEBUG = True
  • Промежуточное ПО - после кодировщиков и до Flatpage's

Я опаздываю на несколько лет, но все еще есть люди с Django 1.3: (

0 голосов
/ 28 декабря 2018

В то время, когда я пишу это, это также может произойти, если вы дублируете промежуточное ПО панели отладки.Я использую Django 1.11 с django-debug-toolbar==1.8 .

У меня было что-то подобное несколько раз в коде:

if DEBUG and USE_DEBUG_TOOLBAR:
    MIDDLEWARE = ('debug_toolbar.middleware.DebugToolbarMiddleware',) + MIDDLEWARE

См .: https://github.com/jazzband/django-debug-toolbar/issues/986

...