django-debug-панель инструментов не отображается
Я посмотрел на другие вопросы и не могу понять...
Я сделал следующее, Чтобы установить django-debug-toolbar:
- pip установить 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 в 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 -
текущая стабильная версия 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>
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
у меня панель работает просто идеально. С этой конфигурацией:
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', )
надеюсь, это поможет
Я пробовал все, от настройки 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 в это также должны работать.
настройки
если вы разрабатываете с сервером 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 минут моего времени на отладку глупой ошибки : (