2011-07-27 118 views
9

我最近安裝了django-debug-toolbar。工具欄工作,我可以看到側面的標籤。然而,沒有在SQL選項卡中顯示出來,即使我明明已經執行的SQL查詢(如管理員): enter image description hereDjango調試工具欄不顯示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。這個問題的任何幫助將是真棒......

編輯: 基於答案,我決定後我是怎麼處理我的看法功能:

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?什麼OS? –

+0

CentOS服務器上的Python2.7。對不起,延長斷層... – banerjs

回答

2

我只是找到了一個辦法:

  • 右鍵單擊「默認」
  • 點擊審查元素
  • 發現其中有風格=附近表「顯示:無」
  • 編輯風格屬性,刪除它

我不知道爲什麼我必須做的一切......

+0

等待,你說的是SQL實際上一直在頁面上,但隱藏? –

+0

絕對!這不是一個無賴嗎? – jpic

5

請確保您有在處理請求的同一線程中運行SQL。

Django調試工具欄似乎只查看當前線程中運行的SQL語句,並假定這些是與處理的請求相關的唯一的語句。

+0

你能告訴我怎麼保證嗎?有沒有我可以使用的python模塊?我在一個共享的託管服務器上運行它,因此很多內部組件都從我這裏抽象出來... – banerjs

+0

除非您在代碼中明確啓動python線程,然後從這些線程運行SQL查詢,否則您將處於同一線程中處理請求。 –

+0

我已經包括了我的一些視圖函數的工作方式。該格式會導致django創建新線程?此外,工具欄似乎並未在管理界面中顯示任何SQL查詢。感謝所有的幫助和抱歉,它花了我很長的時間來回應... – banerjs

4

我有同樣的問題,我發現解決方案在我的情況。 我在Windows Vista上使用python 2.5。有兩個問題。首先,在debug_toolbar.panels.sql模塊中使用python 2.6支持的「format」函數。我使用「%」運算符(第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 =真
  • 中間件是編碼器之後和在簡單頁面的

我要遲到了幾年,但仍然有人與Django 1.3圍繞:(