django-debug-панель инструментов не отображается
Я посмотрел на другие вопросы и не могу понять...
Я сделал следующее, Чтобы установить 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
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, был тем, что сделало трюк активации панели инструментов.
Если все остальное в порядке, это также может быть, что ваш шаблон не имеет явного закрытия
<body>tag -
текущая стабильная версия 0.11.0 требует, чтобы для панели инструментов были показаны следующие вещи:
параметры:
DEBUG = TrueINTERNAL_IPSчтобы включить IP-адрес Вашего браузера, а не адрес сервера. Если просмотр локально это должно бытьINTERNAL_IPS = ('127.0.0.1',). Если просмотр удаленно просто укажите свой публичный адрес.- debug_toolbar приложение, которое будет установлено т. е.
INSTALLED_APPS = (..., 'debug_toolbar',)- добавляемый класс промежуточного программного обеспечения панели инструментов отладки, т. е.
MIDDLEWARE_CLASSES = ('debug_toolbar.middleware.DebugToolbarMiddleware', ...). Он должен быть помещен как можно раньше в список.файлы шаблонов:
- должно быть типа
text/html- должен иметь закрывающий тег
</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
у меня панель работает просто идеально. С этой конфигурацией:
DEBUG = TrueINTERNAL_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', )надеюсь, это поможет
Я перепробовал все, начиная с настройки
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 в это также должны работать.
настройки
если вы разрабатываете с сервером 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