【问题标题】:Django toolbar not showing upDjango工具栏没有显示
【发布时间】:2012-06-12 11:39:46
【问题描述】:

我们昨天在远程服务器上安装了 django 工具栏,并一直在尝试让它显示在页面本身上。我已经在这里和谷歌上解决了所有关于它的问题,并且按照他们设想的方式进行了所有设置。像 INTERNAL_IPS、DEBUG、MIDDLEWARE_CLASSES 等。工具栏代码显示在源 html 中,但我在屏幕上看不到任何按钮。我已经准备好在这件事上拔头发了。请帮忙!下面我将粘贴在 html 中我的标记之前显示的工具栏代码。

<script type="text/javascript">
// <![CDATA[
var DEBUG_TOOLBAR_MEDIA_URL = "/__debug__/m/";
// ]]>
</script>
<script type="text/javascript" src="/__debug__/m/js/toolbar.min.js"></script>
<div id="djDebug" style="display:none;">
<div style="display:none;" id="djDebugToolbar">
    <ul id="djDebugPanelList">
    <li><a id="djHideToolBarButton" href="#" title="Hide Toolbar">Hide &raquo;   </a></li>
            <li>
            <a href="#" title="Versions" class="djDebugVersionPanel">
            Versions
            <br /><small>Django 1.4</small>
            </a>
            </li>
            <li>
            <a href="#" title="Resource Usage" class="djDebugTimerPanel">
                Time
            <br /><small>CPU: 220.01ms (251.44ms)</small>

编辑:我正在添加我的应用程序的 settings.py 部分:

if DEBUG:
INTERNAL_IPS = ('my machine's IP',)
MIDDLEWARE_CLASSES += (
    'debug_toolbar.middleware.DebugToolbarMiddleware',
)

INSTALLED_APPS += (
    'debug_toolbar',
)

DEBUG_TOOLBAR_PANELS = (
    'debug_toolbar.panels.version.VersionDebugPanel',
    'debug_toolbar.panels.timer.TimerDebugPanel',
    'debug_toolbar.panels.settings_vars.SettingsVarsDebugPanel',
    'debug_toolbar.panels.headers.HeaderDebugPanel',
    #'debug_toolbar.panels.profiling.ProfilingDebugPanel',
    'debug_toolbar.panels.request_vars.RequestVarsDebugPanel',
    'debug_toolbar.panels.sql.SQLDebugPanel',
    'debug_toolbar.panels.template.TemplateDebugPanel',
    'debug_toolbar.panels.cache.CacheDebugPanel',
    'debug_toolbar.panels.signals.SignalDebugPanel',
    'debug_toolbar.panels.logger.LoggingPanel',
)

DEBUG_TOOLBAR_CONFIG = {
    'INTERCEPT_REDIRECTS': False,
}

def show_toolbar(request):
    return True # Always show toolbar, for example purposes only.

DEBUG_TOOLBAR_CONFIG = {
'INTERCEPT_REDIRECTS': False,
'SHOW_TOOLBAR_CALLBACK': show_toolbar,
 # 'EXTRA_SIGNALS': ['myproject.signals.MySignal'],
'HIDE_DJANGO_SQL': False,
#  'TAG': 'html',
'DEBUG_TOOLBAR_MEDIA_URL' : '/usr/local/lib/python2.6/dist-packages/django_debug_toolbar-0.8.5-py2.6.egg/debug_toolbar/media'       
    }

【问题讨论】:

  • 在页面源代码中,就在您粘贴的 sn-p 之前,应该有一个 style 标记,其中包含用于调试工具栏的大量 CSS。它在那里吗?如果是,请查看 WebKit 检查器,也许您自己的一些 CSS 声明会干扰调试工具栏的声明并将其隐藏或将其推到屏幕外?
  • 我看了,但工具栏没有任何 CSS。单击 JavaScript 文件 src 链接 src="/__debug__/m/js/toolbar.min.js"> 将我带到一个未找到的页面。不知道这是否重要。
  • 我认为这很重要。如果调试模式被激活,您应该会看到 django 调试 404 页面,其中包含路由列表。你能在列表中路由与调试工具栏相关的吗?
  • 是的。看到在 mysite.urls 列表中找不到 url 的页面。我认为工具栏 url.py 应该会处理它。我需要在这里做点什么吗?
  • 这是我在找不到 django 页面 (404) 时看到的内容:当前 URL __debug__/sql_explain/ 与其中任何一个都不匹配。

标签: python django apache django-debug-toolbar


【解决方案1】:

这是一个疯狂的猜测,但我之前遇到过这个问题:你的 html 代码不正确。我想我有一个丢失的标签,它阻止了调试工具栏的显示,但这不是问题。

禁用调试工具栏并检查您的页面是否正确(例如,使用 w3c 验证器)。如果您发现任何 html 问题,请更正它。它可能会使调试工具栏再次工作。

【讨论】:

  • 谢谢。我检查了,但它们都是小问题,比如不使用
    而不是
    。我纠正了他们,但仍然没有喜悦。
  • 没问题。谢谢你的尝试。这里还有一点。我尝试使用jQuery .show 方法将此处的none 的值更改为阻塞,并且调试工具数据显示在页面末尾。这是我在 base.html 中更改以显示数据的那个。
  • 我怀疑没有显示的媒体文件(js、css、图像)存在问题。媒体文件的路径是:/usr/local/lib/python2.6/dist-packages/django_debug_toolbar-0.8.5-py2.6.egg/debug_toolbar/media。我想在 settings.py 文件中做些什么来显示媒体文件所在的调试栏吗?
  • 以防万一:在 INSTALLED_APPS 中有 'debug_toolbar' 吗?看起来它的静态文件没有被 Django 拾取。如果你加载例如http://yourserver:port/__debug__/m/js/toolbar.min.js 在浏览器中,你应该得到一大块 JS。
  • 是的。当然是: INSTALLED_APPS += ( 'debug_toolbar', ) 这就是我得到的:当前 URL __debug__/m/js/toolbar.min.js 与其中任何一个都不匹配。所以,我没有得到媒体文件夹中的 JS 或任何东西。我该怎么做才能确保应用程序可以访问工具栏媒体文件。
【解决方案2】:

SHOW_TOOLBAR_CALLBACK 的含义已更改为需要字符串且不支持可调用对象。

def custom_show_toolbar(request):
    return True  # Always show toolbar, for example purposes only.

DEBUG_TOOLBAR_CONFIG = {
    'SHOW_TOOLBAR_CALLBACK': 'your_project_name.settings.custom_show_toolbar',
}

【讨论】:

    【解决方案3】:

    调试工具栏的最新版本是 0.9.4 值得一试升级——也许在此过程中的某个时候修复了一个错误。

    【讨论】:

    • 应该考虑一下。我也遇到过这个问题。
    • 我的问题是:安装 debug_toolbar 后没有运行 collectstatic。我的静态文件用于 S3 存储桶,因此实际上没有任何 javascripts。
    【解决方案4】:

    包括其他内容,需要在settings.py文件中确认以下几行:

    mimetypes
    mimetypes.add_type("application/javascript", ".js", True)
    DJANGO_DEBUG = True
    

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签