django-debug-toolbar не отображается

89

Я посмотрел на другие вопросы и не могу понять это...

Для установки django-debug-toolbar я сделал следующее:

  • pip install django-debug-toolbar
  • добавлен в классы промежуточного ПО:
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',
)

3 Добавлен INTERNAL_IPS:

INTERNAL_IPS = ('174.121.34.187',)

4 Добавлен debug_toolbar для установленных приложений

Я не получаю никаких ошибок или что-то еще, и панель инструментов не отображается ни на одной странице, ни даже на admin.

Я даже добавил каталог шаблонов debug_toolbar к моему TEMPLATE_DIRS

  • 9
    Если вы используете Vagrant, убедитесь, что ваш INTERNAL_IPS правильный. Один из способов проверки заключается в представлении, распечатайте ваш request.META['REMOTE_ADDR'] , а затем добавьте его в свой INTERNAL_IPS .
  • 0
    Это может кому-то помочь. Я пытался добавить '*' во внутренние IP-адреса, но это не работает. Вы должны ввести конкретные IP-адреса.
Теги:
django-debug-toolbar

22 ответа

103
Лучший ответ

Глупый вопрос, но вы не упомянули об этом, поэтому... Что такое DEBUG? Он не будет загружаться, если он не будет True.

Если он все еще не работает, попробуйте добавить '127.0.0.1' в INTERNAL_IPS.

UPDATE

Это шаг назад, вы не должны этого делать, но он ясно покажет, есть ли какая-то проблема с настройкой или какая-то большая проблема.

Добавьте в settings.py следующее:

def show_toolbar(request):
    return True
SHOW_TOOLBAR_CALLBACK = show_toolbar

Это позволит эффективно удалить все проверки с помощью панели инструментов отладки, чтобы определить, нужно ли это или не должно загружать себя; он всегда будет просто загружаться. Оставайтесь только в целях тестирования, если вы забудете и запустите с ним, все ваши посетители также смогут увидеть вашу панель инструментов отладки.

Для явной настройки см. также официальные файлы установки здесь.

ИЗМЕНИТЬ (6/17/2015):

По-видимому, синтаксис ядерной опции изменился. Теперь он в своем словаре:

def show_toolbar(request):
    return True
DEBUG_TOOLBAR_CONFIG = {
    "SHOW_TOOLBAR_CALLBACK" : show_toolbar,
}

Их tests используют этот словарь.

  • 0
    Отладка - это True
  • 0
    добавил 127 .... еще ничего ..
Показать ещё 19 комментариев
66

Панель инструментов Debug хочет, чтобы IP-адрес был запрошен. META ['REMOTE_ADDR'] устанавливается в настройке INTERNAL_IPS. Выполните печать в одном из своих представлений:

print("IP Address for debug-toolbar: " + request.META['REMOTE_ADDR'])

И затем загрузите эту страницу. Убедитесь, что IP находится в настройках INTERNAL_IPS в settings.py.

Обычно я бы подумал, что вы сможете легко определить адрес, посмотрев на свой IP-адрес компьютера, но в моем случае я запускаю сервер в виртуальной коробке с переадресацией портов... и кто знает, что произошло, Несмотря на то, что он не видел его где-либо в ifconfig на VB или моей собственной ОС, IP-адрес, который появился в ключе REMOTE_ADDR, был тем, что помогло активировать панель инструментов.

  • 3
    Это была моя проблема. У меня был неправильный внутренний IP.
  • 1
    Я добирался до своей страницы через прокси-сервер nginx, поэтому remote_addr был моим прокси, а не моим настоящим ip. Мне нужно было добавить свой IP-адрес прокси-сервера в INTERNAL_IPS и он начал работать.
Показать ещё 4 комментария
38

Если все остальное в порядке, также может быть, что вашему шаблону не хватает явного закрывающего тега <body> -

Примечание. Панель инструментов отладки будет отображаться только в том случае, если типом ответа является текст /html или application/xhtml + xml и содержит закрывающий тег.

19

Текущая стабильная версия 0.11.0 требует, чтобы отображалась панель инструментов:

Файл настроек:

  • DEBUG = True
  • INTERNAL_IPS, чтобы указать IP-адрес вашего браузера, в отличие от адреса сервера. При локальном просмотре это должно быть INTERNAL_IPS = ('127.0.0.1',). Если вы просматриваете удаленно, просто укажите свой общий адрес.
  • Установленное приложение debug_toolbar i.e INSTALLED_APPS = (..., 'debug_toolbar',)
  • Добавлен класс промежуточного программного обеспечения панели отладки, т.е. MIDDLEWARE_CLASSES = ('debug_toolbar.middleware.DebugToolbarMiddleware', ...). Он должен быть помещен как можно раньше в список.

Файлы шаблонов:

  • Должно быть типа text/html
  • Должен иметь закрытый тег </html>

Статические файлы:

Если вы используете статический контент, убедитесь, что вы собрали css, js и html, выполнив:

./manage.py collectstatic 


Примечание о предстоящих версиях django-debug-toolbar

В более новых версиях разработки добавлены значения по умолчанию для точек настройки 2, 3 и 4, что делает жизнь немного проще, однако, как и в любой версии разработки, она имеет ошибки. Я обнаружил, что последняя версия от git привела к ошибке ImproperlyConfigured при запуске через nginx/uwsgi.

В любом случае, если вы хотите установить последнюю версию из github run:

pip install -e git+https://github.com/django-debug-toolbar/django-debug-toolbar.git#egg=django-debug-toolbar 

Вы также можете клонировать конкретную фиксацию, выполняя:

pip install -e git+https://github.com/django-debug-toolbar/django-debug-toolbar.git@ba5af8f6fe7836eef0a0c85dd1e6d7418bc87f75#egg=django_debug_toolbar
  • 3
    ./manage.py collectstatic - это то, что мне было нужно, спасибо!
  • 2
    на самом деле это тег <body> </ body>, который необходим не </ html>
13

У меня панель инструментов работает идеально. С помощью этих конфигураций:

  • DEBUG = True
  • INTERNAL_IPS = ('127.0.0.1', '192.168.0.1',)
  • DEBUG_TOOLBAR_CONFIG = {'INTERCEPT_REDIRECTS': False,}
  • Среднее ПО является первым элементом в 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',
)

Я надеюсь, что это поможет

  • 2
    Вы, вероятно, должны отредактировать свой IP-адрес из вашего ответа. Поскольку в наши дни большинство людей используют широкополосный доступ, и большинство широкополосных подключений редко меняют IP-адрес, если вообще когда-либо. Вы, вероятно, не хотите, чтобы это болталось на паутинах.
  • 0
    192.168. *. * - это внутренний локальный IP-адрес, назначенный компьютеру маршрутизатором. Внешний IP-адрес отличается.
Показать ещё 2 комментария
10

Добавьте 10.0.2.2 в свой INTERNAL_IPS в Windows, он используется с внутренним брандом

INTERNAL_IPS = (   '10.0.2.2', )

Это должно работать.

  • 1
    Подтвердил, что это исправило мою проблему с использованием Vagrant на OSX.
  • 0
    Это наиболее правильное и наиболее вероятное и простое решение :) Подтверждение работы с использованием vagrant в Windows 7
9

Я попробовал все: от установки DEBUG = True до настроек INTERNAL_IPS до моего IP-адреса клиента и даже вручную настроить панель инструментов Django Debug (обратите внимание, что последние версии автоматически настраивают все конфигурации, такие как добавление промежуточного программного обеспечения и URL-адресов). На удаленном сервере разработки ничего не работало (хотя оно работало локально). ТОЛЬКО работала, настраивая панель инструментов следующим образом:

DEBUG_TOOLBAR_CONFIG = {
    "SHOW_TOOLBAR_CALLBACK" : lambda request: True,
}

Это заменяет метод по умолчанию, который определяет, должна ли отображаться панель инструментов и всегда возвращает true.

5

У меня была та же проблема и, наконец, она была решена после некоторых поисковых запросов.

В INTERNAL_IPS вам нужно иметь IP-адрес клиента.

4

Еще одна вещь, которая может заставить панель инструментов оставаться скрытой, - если она не может найти требуемые статические файлы. Шаблоны debug_toolbar используют тег шаблона {{STATIC_URL}}, поэтому убедитесь, что в ваших статических файлах, называемых панелью отладки, есть папка.

Команда управления коллекцией должна позаботиться об этом на большинстве установок.

3

Я попробовал конфигурацию из pydanny cookiecutter-django, и это сработало для меня:

# django-debug-toolbar
MIDDLEWARE_CLASSES = Common.MIDDLEWARE_CLASSES + ('debug_toolbar.middleware.DebugToolbarMiddleware',)
INSTALLED_APPS += ('debug_toolbar',)

INTERNAL_IPS = ('127.0.0.1',)

DEBUG_TOOLBAR_CONFIG = {
    'DISABLE_PANELS': [
        'debug_toolbar.panels.redirects.RedirectsPanel',
    ],
    'SHOW_TEMPLATE_CONTEXT': True,
}
# end django-debug-toolbar

Я просто изменил его, добавив 'debug_toolbar.apps.DebugToolbarConfig' вместо 'debug_toolbar', как указано в официальном django-debug-toolbar docs, так как я используя Django 1.7.

2

django 1.8.5:

Мне пришлось добавить в файл url.py проекта, чтобы отобразить панель инструментов отладки. После этого отобразится панель инструментов отладки.

 from django.conf.urls import include
 from django.conf.urls import patterns
 from django.conf import settings


  if settings.DEBUG:
      import debug_toolbar
      urlpatterns += patterns('',
              url(r'^__debug__/', include(debug_toolbar.urls)),
              )

django 1.10: и выше:

from django.conf.urls import include, url
from django.conf.urls import patterns
from django.conf import settings


if settings.DEBUG:

  import debug_toolbar
  urlpatterns =[
         url(r'^__debug__/', include(debug_toolbar.urls)),
         ] + urlpatterns

Также не забудьте включить debug_toolbar в ваше промежуточное программное обеспечение. Панель инструментов Debug в основном реализована в промежуточном программном обеспечении. Включите его в своем модуле настроек следующим образом: (более ранние версии django)


MIDDLEWARE = [
# ...
'debug_toolbar.middleware.DebugToolbarMiddleware',
#

Старое промежуточное ПО: (необходимо иметь ключевое слово _CLASSES в промежуточном ПО)

MIDDLEWARE_CLASSES = [
# ...
'debug_toolbar.middleware.DebugToolbarMiddleware',
# ...
]
2

В дополнение к предыдущим ответам:

если панель инструментов не отображается, но загружается в html (проверьте свой сайт html в браузере, прокрутите вниз)

проблема может заключаться в том, что статические файлы панели отладки не найдены (это также можно увидеть в журналах доступа к сайту, например, 404 ошибки для /static/debug _toolbar/js/toolbar.js)

Его можно исправить следующим образом (примеры для nginx и apache):

nginx config:

location ~* ^/static/debug_toolbar/.+.(ico|css|js)$ {
    root [path to your python site-packages here]/site-packages/debug_toolbar;
}

apache config:

Alias /static/debug_toolbar [path to your python site-packages here]/site-packages/debug_toolbar/static/debug_toolbar

Или:

manage.py collectstatic

подробнее о collectstatic здесь: https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#collectstatic

Или вручную переместить папку debug_toolbar из статических файлов debug_toolbar в папку с установленными статическими файлами.

1

В моем случае мне просто нужно было удалить скомпилированные файлы на python (*.pyc)

1

В моем случае это была еще одна проблема, о которой здесь еще не упоминалось: у меня была GZipMiddleware в моем списке посредников.

Поскольку автоматическая настройка панели инструментов отладки помещает промежуточное программное обеспечение панели отладки вверху, она получает только "см." gzipped HTML, к которому он не может добавить панель инструментов.

Я удалил GZipMiddleware в моих настройках разработки. Настройка конфигурации панели инструментов отладки вручную и размещение промежуточного программного обеспечения после GZip также должно работать.

1

Это было не так для этого конкретного автора, но я просто боролся с панелью Debug Toolbar, которая не показывалась, и после всего, что они указали, я обнаружил, что это проблема с заказом MIDDLEWARE. Поэтому использование промежуточного ПО в начале списка может работать. Первая шахта:

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', 'dynpages.middleware.DynpageFallbackMiddleware', 'utils.middleware.UserThread', )

0

Для тех, кто использует Pycharm 5 - отладка шаблонов в некоторых версиях не работает. Исправлено в 5.0.4, затронутые версии - 5.0.1, 5.0.2 Проверьте issue

Потратьте время, чтобы найти это. Возможно, кто-то поможет

0

У меня была эта проблема, и мне пришлось установить панель инструментов отладки из источника.

Версия 1.4 имеет проблему, когда она скрыта, если вы используете PureCSS и, по-видимому, другие рамки CSS.

Это - это фиксация, которая исправляет это.

Документы объясняют, как установить из источника.

0

У меня была такая же проблема с использованием Vagrant. Я решил эту проблему, добавив ::ffff:192.168.33.1 в INTERNAL_IPS, как показано ниже.

INTERNAL_IPS = (
    '::ffff:192.168.33.1',
)

Помня, что 192.168.33.10 является IP-адресом в моей частной сети в Vagrantfile.

0

У меня такая же проблема, я решил ее, посмотрев журнал ошибок Apache. Я получил apache, работающий на mac os x с mod_wsgi Папка tamplete debug_toolbar не была загружена

Пример журнала:

==> /private/var/log/apache2/dummy-host2.example.com-error_log <==
[Sun Apr 27 23:23:48 2014] [error] [client 127.0.0.1] File does not exist: /Library/WebServer/Documents/rblreport/rbl/static/debug_toolbar, referer: http://127.0.0.1/

==> /private/var/log/apache2/dummy-host2.example.com-access_log <==
127.0.0.1 - - [27/Apr/2014:23:23:48 -0300] "GET /static/debug_toolbar/css/toolbar.css HTTP/1.1" 404 234 "http://127.0.0.1/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:28.0) Gecko/20100101 Firefox/28.0"

Я просто добавляю эту строку в свой файл VirtualHost:

Alias /static/debug_toolbar /Library/Python/2.7/site-packages/debug_toolbar/static/debug_toolbar
  • Конечно, вы должны изменить свой путь к python.
0

Для меня это было так же просто, как ввести 127.0.0.1:8000 в адресную строку, а не localhost:8000, которая, по-видимому, не соответствовала INTERNAL_IPS.

0

вы должны убедиться, что в ваших шаблонах есть закрывающий тег.

Моя проблема в том, что в моих шаблонах нет регулярных тегов html, я просто показываю контент в виде обычного текста. Я решил это, наследуя каждый html файл из base.html, который имеет тег.

-1

Одна глупая вещь заставила меня.. что если вы используете apache wsgi, не забудьте прикоснуться к файлу .wsgi, чтобы заставить ваш код перекомпилировать. просто потратьте 20 минут моего времени на отладку глупой ошибки: (

Ещё вопросы

Сообщество Overcoder
Наверх
Меню