我正在使用Django調試工具欄來調試和優化我的網站。我還使用一些自定義中間件來執行諸如檢查用戶是否已登錄並被允許訪問他們試圖查看的URL,查詢廣告等事情。Django調試工具欄顯示來自中間件的查詢
在這個中間件中,有時候SQL查詢被執行,但查詢不會顯示在DDT的「查詢」面板下。有沒有辦法讓DDT識別和跟蹤中間件?
我正在使用Django調試工具欄來調試和優化我的網站。我還使用一些自定義中間件來執行諸如檢查用戶是否已登錄並被允許訪問他們試圖查看的URL,查詢廣告等事情。Django調試工具欄顯示來自中間件的查詢
在這個中間件中,有時候SQL查詢被執行,但查詢不會顯示在DDT的「查詢」面板下。有沒有辦法讓DDT識別和跟蹤中間件?
MIDDLEWARE_CLASSES的順序是非常重要的。您應該儘早在列表中包含 調試工具欄中間件。但是,它必須遵循編碼響應的內容的任何其他中間件,例如GZipMiddleware。
的解決方案是在MIDDLEWARE_CLASSES
您的自定義中間件之前把debug_toolbar.middleware.DebugToolbarMiddleware
。
我發現錯誤的地方之一是當我添加一個單獨的文件debugtoolbar.py所有設置有關啓用debug_toolbar。我剛剛在我的settings_local.py中導入了它,但它以某種方式調用了兩次,並沒有顯示查詢。
只要我添加了一個條件語句添加
import os
import sys
from my_project.settings import INSTALLED_APPS, MIDDLEWARE_CLASSES
DEBUG_TOOLBAR_APPS_NAME = 'debug_toolbar'
if DEBUG_TOOLBAR_APPS_NAME not in INSTALLED_APPS:
INSTALLED_APPS += (DEBUG_TOOLBAR_APPS_NAME,)
DEBUG_TOOLBAR_MIDDLEWARE = 'debug_toolbar.middleware.DebugToolbarMiddleware'
if DEBUG_TOOLBAR_MIDDLEWARE not in MIDDLEWARE_CLASSES:
MIDDLEWARE_CLASSES = (DEBUG_TOOLBAR_MIDDLEWARE,) + MIDDLEWARE_CLASSES
def custom_show_toolbar(request):
return True
DEBUG_TOOLBAR_CONFIG = {
'SHOW_TOOLBAR_CALLBACK': 'my_project.settings.custom_show_toolbar',
}
它開始工作的所有罰款。希望這會節省一些人的時間。
這確實節省了我的時間,謝謝。我將它縮減爲:'DEBUG_TOOLBAR_CONFIG = {SHOW_TOOLBAR_CALLBACK':lambda x:True, }' –