Django调试工具栏不显示SQL

时间:2011-07-27 04:19:09

标签: django django-1.3 django-debug-toolbar

我最近安装了django-debug-toolbar。工具栏工作,我可以看到侧面的标签。但是,即使我明显执行了SQL查询(例如在管理员中),SQL选项卡中也没有显示任何内容: enter image description here

我的设置如下:

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

5 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分: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。我改变了分离角色并且进展顺利。

答案 2 :(得分:2)

我找到了一条路:

  • 右键点击“默认”
  • 点击检查元素
  • 找到附近的表格,其中style =“display:none”
  • 编辑样式属性以将其删除

我不知道为什么我要这么做......

答案 3 :(得分:1)

这对我有用:

pip install django-debug-toolbar==0.9.4

还要确保:

  • DEBUG =真
  • 中间件在编码器之后和Flatpage的
  • 之前

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

答案 4 :(得分:0)

在撰写本文时,如果您复制调试工具栏中间件,也会发生这种情况。我正在将<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://code.createjs.com/1.0.0/createjs.min.js"></script> <canvas id="canvas" width="300" height="300"></canvas>Django 1.11一起使用。

我在代码中不止一次这样的事情:

django-debug-toolbar==1.8

请参阅:https://github.com/jazzband/django-debug-toolbar/issues/986