2011-07-27 4 views
9

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

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

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) }) 
+0

Какая версия python? Какая ОС? –

+0

Python2.7 на сервере CentOS. Извините за расширенный перерыв ... – banerjs

ответ

2

Я просто найти способ:

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

Я не знаю, почему я должен делать все, что ...

+0

Подождите, вы говорите, что SQL на самом деле присутствует на странице все время, но скрыт? –

+0

Абсолютно! Разве это не облом? – jpic

5

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

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

+0

Не могли бы вы показать мне, как бы я это сделал? Есть ли модуль python, который я могу использовать для этого? Я запускаю это на общем сервере хостинга, и поэтому многие внутренние элементы абстрагируются от меня ... – banerjs

+0

Если вы явно не запускаете потоки python внутри вашего кода, а затем запускаете SQL-запросы из этих потоков, вы будете в одном потоке который обрабатывает запрос. –

+0

Я включил как некоторые из моих функций представления работают. Будет ли этот формат заставлять django создавать новые потоки? Кроме того, на панели инструментов не отображаются какие-либо SQL-запросы в интерфейсе администратора. Спасибо за всю помощь и жаль, что мне потребовалось столько времени, чтобы ответить ... – banerjs

4

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

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

+0

Спасибо. Извините за расширенный перерыв, но я работал на сервере CentOS ... – banerjs

1

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

pip install django-debug-toolbar==0.9.4 

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

  • DEBUG = True
  • Middleware после кодеров и до Flatpage-х

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