django-debug-toolbar没有显示出来

Ale*_*and 129 python django django-debug-toolbar

我看了其他问题但无法弄明白......

我做了以下安装django-debug-toolbar:

  1. pip install django-debug-toolbar
  2. 添加到中间件类:
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',
    # Uncomment the next line for simple clickjacking protection:
    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'debug_toolbar.middleware.DebugToolbarMiddleware',
)
Run Code Online (Sandbox Code Playgroud)

3添加了INTERNAL_IPS:

INTERNAL_IPS =('174.121.34.187',)

4为已安装的应用添加了debug_toolbar

我没有收到任何错误或任何内容,工具栏不显示在任何页面上,甚至不显示管理员.

我甚至将debug_toolbar模板的目录添加到了我的目录中 TEMPLATE_DIRS

Chr*_*att 165

愚蠢的问题,但你没有提到它,所以... DEBUG设置的是什么?它不会加载,除非它是True.

如果它仍然无法正常工作,请尝试添加"127.0.0.1" INTERNAL_IPS.

UPDATE

这是最后一搏,努力的举动,你不应该这样做,但它清楚地表明,如果有一些只是配置问题,或者是否有一些更大的问题.

将以下内容添加到settings.py:

def show_toolbar(request):
    return True
SHOW_TOOLBAR_CALLBACK = show_toolbar
Run Code Online (Sandbox Code Playgroud)

这将有效地删除调试工具栏的所有检查,以确定它是否应该加载自身; 它总会加载.只有将其保留用于测试目的,如果您忘记并使用它启动,所有访问者也将看到您的调试工具栏.

有关显式配置,请参阅此处的官方安装文档.

编辑(2015年6月17日):

显然核选项的语法已经改变.它现在在自己的字典中:

def show_toolbar(request):
    return True
DEBUG_TOOLBAR_CONFIG = {
    "SHOW_TOOLBAR_CALLBACK" : show_toolbar,
}
Run Code Online (Sandbox Code Playgroud)

他们的测试使用这本字典.

  • 甚至`SHOW_TOOLBAR_​​CALLBACK = lambda x:True` (10认同)
  • INTERNAL_IPS还有我...感谢您的信息 (9认同)
  • @schillingt是的,道歉我应该检查一下.我想我必须运行`collectstatic`来让一切都出现. (6认同)
  • 是的,所以这里有更大的问题。如果您使用的不是runserver,请确保重新启动它。哎呀,也要重启`runserver`。确保您对settings.py的更改*实际上*已保存/提交。您可能要尝试删除* .pyc文件。在* nix中,您可以使用`find简单地做到这一点。-name“ * .pyc” -exec rm {} \;`从项目根目录开始。最后,运行python manage.py shell并从django.conf导入设置中执行并检查settings.INSTALLED_APPs的值。 (3认同)
  • 我不确定你对最后一个问题的意思,但是如果你指的是`INTERNAL_IPS`,那些是针对客户端而不是服务器(Django).换句话说,你输入*你的*IP地址,所以*你*可以看到调试工具栏,无论网站运行的是什么IP. (3认同)
  • 0.9.4 的回调设置至少应为 DEBUG_TOOLBAR_​​CONFIG.update({'SHOW_TOOLBAR_​​CALLBACK': show_toolbar,}) (2认同)

tim*_*haw 78

调试工具栏需要在INTERNAL_IPS设置中设置request.META ['REMOTE_ADDR']中的IP地址.在您的一个视图中输入print语句,如下所示:

print("IP Address for debug-toolbar: " + request.META['REMOTE_ADDR'])
Run Code Online (Sandbox Code Playgroud)

然后加载该页面.确保IP在settings.py中的INTERNAL_IPS设置中.

一般情况下我认为你将能够通过查看您的计算机的IP地址很容易地确定地址,但对我来说,我在运行端口转发虚拟盒服务器...谁知道发生了什么.尽管在VB或我自己的操作系统的ifconfig没有看到它的任何地方,即在REMOTE_ADDR关键露面的IP是什么呀激活工具栏的伎俩.

  • 这是我的问题.我的内部IP错了. (3认同)
  • 在docker我的REMOTE_ADDR不是我想象的那样. (3认同)
  • 我是通过nginx代理传递到达我的页面的,所以remote_addr是我的代理,而不是我的真实IP。我需要将我的代理IP地址添加到“ INTERNAL_IPS”,然后它开始工作。 (2认同)

don*_*ner 26

当前稳定版本0.11.0要求显示工具栏以下内容:

设置文件:

  1. DEBUG = True
  2. INTERNAL_IPS包括您的浏览器IP地址,而不是服务器地址.如果在本地浏览应该是INTERNAL_IPS = ('127.0.0.1',).如果远程浏览只需指定您的公共地址.
  3. 要安装的debug_toolbar应用程序即 INSTALLED_APPS = (..., 'debug_toolbar',)
  4. 要添加的调试工具栏中间件类即MIDDLEWARE_CLASSES = ('debug_toolbar.middleware.DebugToolbarMiddleware', ...).它应该尽早放在列表中.

模板文件:

  1. 必须是类型 text/html
  2. 必须有一个结束</html>标记

静态文件:

如果您正在提供静态内容,请确保通过执行以下操作来收集css,js和html:

./manage.py collectstatic 
Run Code Online (Sandbox Code Playgroud)


关于即将发布的django-debug-toolbar版本的注意事项

较新的开发版本为设置点2,3和4添加了默认设置,这使得生活更简单,但是,与任何开发版本一样,它有bug.我发现git的最新版本ImproperlyConfigured在运行nginx/uwsgi时导致错误.

无论哪种方式,如果你想从github运行安装最新版本:

pip install -e git+https://github.com/django-debug-toolbar/django-debug-toolbar.git#egg=django-debug-toolbar 
Run Code Online (Sandbox Code Playgroud)

您还可以通过执行以下操作克隆特定提交:

pip install -e git+https://github.com/django-debug-toolbar/django-debug-toolbar.git@ba5af8f6fe7836eef0a0c85dd1e6d7418bc87f75#egg=django_debug_toolbar
Run Code Online (Sandbox Code Playgroud)

  • `.manage.py collectstatic`是我需要的,谢谢! (3认同)
  • 实际上它的<body> </ body>标签是必要的</ html> (2认同)

Ano*_*oyz 20

我尝试了一切,从设置DEBUG = True,设置INTERNAL_IPS到客户端的IP地址,甚至手动配置Django调试工具栏(请注意,最新版本会自动进行所有配置,例如添加中间件和URL).在远程开发服务器中没有任何工作(尽管它确实在本地工作).唯一有用的是按如下方式配置工具栏:

DEBUG_TOOLBAR_CONFIG = {
    "SHOW_TOOLBAR_CALLBACK" : lambda request: True,
}
Run Code Online (Sandbox Code Playgroud)

这将替换决定是否应显示工具栏的默认方法,并始终返回true.


Cés*_*sar 14

我的工具栏工作得很完美.使用此配置:

  1. DEBUG = True
  2. INTERNAL_IPS = ('127.0.0.1', '192.168.0.1',)
  3. DEBUG_TOOLBAR_CONFIG = {'INTERCEPT_REDIRECTS': False,}
  4. 中间件是第一个元素MIDDLEWARE_CLASSES:
MIDDLEWARE_CLASSES = (
    'debug_toolbar.middleware.DebugToolbarMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)
Run Code Online (Sandbox Code Playgroud)

我希望它有所帮助

  • 您应该从您的答案中编辑您的IP地址.由于现在大多数人都在运行宽带,大多数宽带连接很少会改变IP地址.你可能不希望在互联网上闲逛. (2认同)

Bas*_*ans 12

10.0.2.2在Windows上添加到INTERNAL_IPS,它在内部与vagrant一​​起使用

INTERNAL_IPS =('10 .0.2.2',)

这应该工作.


Mar*_*ian 9

码头工人

如果您要在具有docker的Docker容器中使用Django服务器进行开发,则启用工具栏的说明无效。原因与以下事实有关:您需要添加的实际地址将INTERNAL_IPS是动态的,例如172.24.0.1。而不是尝试动态设置的值INTERNAL_IPS,直接的解决方案是替换您的中启用工具栏的功能,settings.py例如:

DEBUG_TOOLBAR_CONFIG = {
    'SHOW_TOOLBAR_CALLBACK': lambda _request: DEBUG
}
Run Code Online (Sandbox Code Playgroud)


这也应该适用于其他动态路由情况,例如无业游民。


这里有一些好奇的细节。django_debug_tool中的确定是否显示工具栏的代码检查如下值REMOTE_ADDR

if request.META.get('REMOTE_ADDR', None) not in INTERNAL_IPS:
       return False
Run Code Online (Sandbox Code Playgroud)

因此,如果REMOTE_ADDR由于动态docker路由而实际上不知道的值,则该工具栏将无法工作。您可以使用docker network命令查看动态IP值,例如docker network inspect my_docker_network_name


Far*_*eez 6

我有同样的问题,并在谷歌搜索后终于解决了.

在INTERNAL_IPS中,您需要拥有客户端的 IP地址.


Ese*_*noz 5

我知道这个问题有点老了,但今天我用 docker 安装了 django-toolbar 并遇到了同样的问题,这为我解决了

INTERNAL_IPS = ["127.0.0.1", "10.0.2.2"]

import socket
hostname, _, ips = socket.gethostbyname_ex(socket.gethostname())
INTERNAL_IPS += [".".join(ip.split(".")[:-1] + ["1"]) for ip in ips]
Run Code Online (Sandbox Code Playgroud)

正如我在评论中读到的,问题是 docker 使用动态 ip,为了解决这个问题,我们可以从上面的代码中获取 ip