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

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

Для установки 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

Ответ 1

Глупый вопрос, но вы не упомянули об этом, поэтому... Что такое 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 используют этот словарь.

Ответ 2

Панель инструментов 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

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

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

Ответ 4

Текущая стабильная версия 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/[email protected]5#egg=django_debug_toolbar

Ответ 5

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

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

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

Ответ 6

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

  • 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',
)

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

Ответ 7

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

INTERNAL_IPS = (   '10.0.2.2', )

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

Ответ 8

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

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

Ответ 9

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

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

Ответ 10

докер

Если вы разрабатываете сервер Django в Docker- контейнере с Docker, инструкции по включению панели инструментов не работают. Причина связана с тем, что фактический адрес, который вам нужно будет добавить к INTERNAL_IPS, будет динамичным, например, 172.24.0.1. Вместо того, чтобы пытаться динамически установить значение INTERNAL_IPS, простое решение состоит в том, чтобы заменить функцию, которая включает панель инструментов, в вашем settings.py, например:

DEBUG_TOOLBAR_CONFIG = {
    'SHOW_TOOLBAR_CALLBACK': lambda _request: DEBUG
}


Это также должно работать для других ситуаций динамической маршрутизации, таких как vagrant.


Вот еще несколько деталей для любопытных. Код в django_debug_tool, который определяет, показывать ли панель инструментов, проверяет значение REMOTE_ADDR следующим образом:

if request.META.get('REMOTE_ADDR', None) not in INTERNAL_IPS:
       return False

так что если вы на самом деле не знаете значение REMOTE_ADDR из-за динамической маршрутизации в докере, панель инструментов не будет работать. Вы можете использовать команду docker network для просмотра динамических значений IP, например, docker network inspect my_docker_network_name

Ответ 11

Я попробовал конфигурацию из 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.

Ответ 12

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

если панель инструментов не отображается, но загружается в 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 в папку с установленными статическими файлами.

Ответ 13

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',
# ...
]

Ответ 14

Это было не так для этого конкретного автора, но я просто боролся с панелью 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', )

Ответ 15

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

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

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

Ответ 16

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

Ответ 17

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

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

Ответ 18

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

Ответ 19

У меня такая же проблема, я решил ее, посмотрев журнал ошибок 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.

Ответ 20

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

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

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

Ответ 21

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

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

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

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

Ответ 22

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

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

Ответ 23

В коде, над которым я работал, во время обработки основного запроса было сделано несколько небольших запросов (это очень специфический вариант использования). Это были запросы, обработанные тем же потоком Django. Панель отладки Django (DjDT) не ожидает такого поведения и включает панели инструментов DjDT в первый ответ, а затем удаляет свое состояние для потока. Поэтому, когда основной запрос был отправлен обратно в браузер, DjDT не был включен в ответ.

Извлеченные уроки: DjDT сохраняет состояние для каждого потока. Он удаляет состояние для потока после первого ответа.

Ответ 24

Что меня достало, так это устаревший браузер!

Заметил, что он загружает некоторые таблицы стилей с панели отладки и предположил, что это может быть проблема внешнего интерфейса.

Ответ 25

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