10

我最近安装了 django-debug-toolbar。工具栏有效,我可以看到侧面的选项卡。但是,即使我显然已经执行了 SQL 查询(例如在管理员中),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,
}

我正在使用带有工具栏版本 0.8.5 的 Django 1.3。对这个问题的任何帮助都会很棒......

编辑: 根据答案,我决定发布我如何处理我的视图功能:

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) })
4

5 回答 5

6

确保您在处理请求的同一线程中运行 SQL。

Django 调试工具栏似乎只查看当前线程中运行的 SQL 语句,并假定这些是唯一与已处理请求相关的语句。

于 2011-07-27T04:24:23.527 回答
4

我有同样的问题,我在我的案例中找到了解决方案。我在 Windows Vista 上使用 python 2.5。有2个问题。

首先,在 debug_toolbar.panels.sql 模块中使用了 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。我改变了分离字符,它很顺利。

于 2011-08-23T10:34:17.210 回答
2

我只是想办法:

  • 右键单击“默认”
  • 单击检查元素
  • 找到附近有 style="display:none" 的桌子
  • 编辑样式属性以将其删除

我不知道为什么我必须做这一切......

于 2012-09-12T12:38:00.380 回答
1

这对我有用:

pip install django-debug-toolbar==0.9.4

还要确保:

  • 调试=真
  • 中间件位于编码器之后,Flatpage 之前

我迟到了几年,但仍然有人使用 Django 1.3 :(

于 2015-08-12T13:58:33.070 回答
0

在我写这篇文章的时候,如果你复制调试工具栏中间件也会发生这种情况。我正在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

于 2018-12-28T04:27:47.840 回答