django-debug-панель инструментов не отображается

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

Я сделал следующее, Чтобы установить django-debug-toolbar:

  1. pip установить 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',
)

3 добавлено INTERNAL_IPS:

INTERNAL_IPS = ('174.121.34.187',)

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

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

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

23 ответов


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

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

обновление

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

добавить в 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,
}

их тесты использовать этот словарь.


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


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

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


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

параметры:

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

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

  1. должно быть типа text/html
  2. должен иметь закрывающий тег </html> tag

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

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

./manage.py collectstatic 


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

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

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

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

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

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

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


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

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

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


добавить 10.0.2.2 для вашего INTERNAL_IPS на Windows, он используется с vagrant внутренне

INTERNAL_IPS = ( '10.0.2.2', )

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


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

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


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

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


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

# 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, поскольку я использую Django 1.7.


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

Если панель инструментов не отображается, но загружается в 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:

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 в папку set static files


Джанго 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)),
              )

Джанго 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 в промежуточное ПО. Панель инструментов отладки в основном реализована в промежуточном по. Включите его в модуле настройки следующим образом: (Джанго новее версии)


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

старое промежуточное ПО: (необходимо иметь _classes keywork в промежуточном по)

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

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

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


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

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

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


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


настройки

если вы разрабатываете с сервером Django в настройки контейнер с Докером, инструкции по включению панели инструментов не работают. Причина связана с тем, что фактический адрес, который нужно добавить в 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 команда для просмотра динамических значений IP, например docker network inspect my_docker_network_name


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

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


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


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

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

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

помня о том, что 192.168.33.10 является IP в моей частной сети в Vagrantfile.


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

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

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

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


для тех, кто использует PyCharm 5 - template debug не работает в некоторых версиях. Исправлено в 5.0.4, затронутые vesions-5.0.1, 5.0.2 Проверьте вопрос

потратьте много времени, чтобы узнать это. Может быть, поможет кому-то


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