3

我正在使用 Django 调试工具栏来调试和优化我的网站。我还使用一些自定义中间件来做一些事情,例如检查用户是否已登录并被允许访问他们试图查看的 url、查询广告等。

在这个中间件中,有时会执行 SQL 查询,但查询不会显示在 DDT 的“查询”面板下。有没有办法让 DDT 识别和跟踪中间件?

4

2 回答 2

3

根据文档

MIDDLEWARE_CLASSES 的顺序很重要。您应该尽早在列表中包含调试工具栏中间件。但是,它必须位于对响应内容进行编码的任何其他中间件之后,例如 GZipMiddleware。

解决方案是将debug_toolbar.middleware.DebugToolbarMiddleware自定义中间件放在MIDDLEWARE_CLASSES.

于 2014-05-08T19:35:12.740 回答
0

我发现错误的地方之一是我为与启用 debug_toolbar 相关的所有设置添加了一个单独的文件 debugtoolbar.py。我刚刚在我的 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',
}

它开始一切正常。希望这会节省某人的时间。

于 2017-04-17T03:58:09.453 回答