【问题标题】:Django Debug Toolbar show queries from middlewareDjango 调试工具栏显示来自中间件的查询
【发布时间】:2014-06-26 08:55:06
【问题描述】:

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

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

【问题讨论】:

    标签: django django-debug-toolbar


    【解决方案1】:

    根据documentation

    MIDDLEWARE_CLASSES 的顺序很重要。你应该包括 尽早在列表中调试 Toolbar 中间件。然而,它 必须在任何其他编码响应的中间件之后 内容,例如 GZipMiddleware。

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

    【讨论】:

      【解决方案2】:

      我发现错误的地方之一是我为与启用 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',
      }
      

      一切正常。希望这会节省一些人的时间。

      【讨论】:

      • 这确实节省了我的时间,谢谢。我将其简化为:DEBUG_TOOLBAR_CONFIG = { 'SHOW_TOOLBAR_CALLBACK': lambda x: True, }
      猜你喜欢
      • 2022-01-11
      • 2011-10-13
      • 2021-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多