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



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



Я сделал следующее, Чтобы установить 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',
)



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




INTERNAL_IPS = ('174.121.34.187',)




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



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



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

1121   23  

23 ответов:

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

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

обновление

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

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

def show_toolbar(request):
    return True
SHOW_TOOLBAR_CALLBACK = show_toolbar

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

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

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

текущая стабильная версия 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> tag

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

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

./manage.py collectstatic 


обратите внимание на предстоящей версии в Django-отладки-панель инструментов

более новые версии разработки добавили значения по умолчанию для пунктов 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 Debug Toolbar вручную (обратите внимание, что последние версии делают все конфигурации автоматически, такие как добавление промежуточного программного обеспечения и 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's 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, так как я использую Django 1.7.

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

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

проблема может заключаться в том, что статические файлы debug toolbar не найдены (вы также можете увидеть это в журналах доступа вашего сайта, например, 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;
}

Апач конфиг:

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

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


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

старый стиль middleware: (нужно иметь _CLASSES keywork в Middleware)

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 в моем списке middlewares.

поскольку автоматическая настройка панели инструментов отладки помещает промежуточное программное обеспечение панели отладки вверху, он получает только "видеть" 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 - шаблон отладки не работает там в некоторых версиях. Фиксированной в 5.0.4, пострадавших версии - 5.0.1, 5.0.2 Проверьте вопрос

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

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

Comments

    Ничего не найдено.