장고 디버그 툴바가 표시되지 않음


132

다른 질문을 보았는데 이해할 수 없습니다 ...

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 추가

오류가 발생하지 않았으며 관리자가 아닌 모든 페이지에 툴바가 표시되지 않습니다.

심지어 debug_toolbar 템플릿의 디렉토리를 내 디렉토리에 추가했습니다. TEMPLATE_DIRS


9
Vagrant를 사용하는 경우 자신이 맞는지 확인 INTERNAL_IPS하십시오. 확인하는 한 가지 방법은보기에서을 인쇄 request.META['REMOTE_ADDR']한 다음을에 추가하는 것 INTERNAL_IPS입니다.

1
이것은 누군가를 도울 수 있습니다. '*'내부 IP 를 추가하려고 시도 했지만 작동하지 않습니다. 특정 IP를 입력해야합니다.
Luv33preet

내 settings.py에서 이제 MIDDLEWARE_CLASSES가 아닌 MIDDLEWARE입니다
bertie

답변:


174

멍청한 질문이지만, 당신은 그것을 언급하지 않았습니다. 그래서 ... 무엇이 DEBUG설정되어 있습니까? 이 아닌 경우로드되지 않습니다 True.

여전히 작동하지 않으면 '127.0.0.1'도 추가하십시오 INTERNAL_IPS.

최신 정보

이것은 당신이하지 말아야 최후의 필사적 인 노력의 움직임이다 이 일을하지만, 분명히 단지 일부 구성 문제가 있는지 표시하거나 약간 더 큰 문제가 있는지 여부 것입니다.

settings.py에 다음을 추가하십시오.

def show_toolbar(request):
    return True
SHOW_TOOLBAR_CALLBACK = show_toolbar

디버그 툴바로 모든 검사를 효과적으로 제거하여 자체로드 해야하는지 여부를 결정합니다. 항상로드됩니다. 테스트 목적으로 만 남겨두고 잊어 버린 경우 모든 방문자가 디버그 도구 모음을 볼 수 있습니다.

명시 적 구성에 대해서는 공식 설치 문서를 참조 하십시오 .

편집 (2015 년 6 월 17 일) :

핵 옵션에 대한 구문이 변경되었습니다. 이제 자체 사전에 있습니다.

def show_toolbar(request):
    return True
DEBUG_TOOLBAR_CONFIG = {
    "SHOW_TOOLBAR_CALLBACK" : show_toolbar,
}

그들의 테스트 는이 사전을 사용합니다.


3
예, 여기에 더 큰 문제가 있습니다. 다른 것을 사용하는 경우 runserver다시 시작해야합니다. runserver도 다시 시작하십시오 . settings.py에 대한 변경 사항이 실제로 저장 / 커밋 되었는지 확인하십시오 . * .pyc 파일을 제거하려고 할 수 있습니다. * nix에서는 간단히 find . -name "*.pyc" -exec rm {} \;프로젝트 루트에서 이를 수행 할 수 있습니다 . 마지막으로 실행 python manage.py shell하고 실행 from django.conf import settings하고 값을 확인하십시오 settings.INSTALLED_APPs.
Chris Pratt

3
마지막 질문에서 당신이 무엇을 의미하는지 잘 모르겠지만,을 참조 INTERNAL_IPS하면 서버 (Django)가 아닌 클라이언트를위한 것입니다. 즉, 당신은에 넣어 당신 때문에 IP 주소 디버그 도구 모음 볼 수있는, IP 사이트가 실행 중일 수 있습니다 어떤 상관없이.
크리스 프랫

10
INTERNAL_IPS도 함께 해주었습니다 .. 정보 주셔서 감사합니다
Lee

12
SHOW_TOOLBAR_CALLBACK = lambda x: True
John Mee

6
@ schillingt 예, 사과드립니다. 나는 collectstatic모든 것을 보이기 위해 달려야한다고 생각한다 .
Rob Grant

80

디버그 툴바는 request.META [ 'REMOTE_ADDR']의 IP 주소가 INTERNAL_IPS 설정에서 설정되기를 원합니다. 다음과 같은 견해 중 하나에 인쇄 진술서를 던져 넣으십시오.

print("IP Address for debug-toolbar: " + request.META['REMOTE_ADDR'])

그런 다음 해당 페이지를로드하십시오. settings.py의 INTERNAL_IPS 설정에 IP가 있는지 확인하십시오.

일반적으로 컴퓨터의 IP 주소를 확인하여 쉽게 주소를 결정할 수 있다고 생각하지만 내 경우에는 포트 전달을 사용하여 가상 상자에서 서버를 실행하고 있으며 누가 무슨 일이 있었는지 알고 있습니다. VB 또는 내 자신의 OS의 ifconfig에서 볼 수 없지만 REMOTE_ADDR 키에 표시된 IP는 툴바를 활성화하는 트릭이었습니다.


2
nginx 프록시 패스를 통해 내 페이지에 도착했기 때문에 remote_addr은 내 실제 IP가 아닌 프록시입니다. 프록시 IP 주소를 추가 INTERNAL_IPS해야했고 작동하기 시작했습니다.
커트

1
VirtualBox의 게스트 컴퓨터에서 호스트 컴퓨터는 누군가에게 도움이 될 경우 10.0.0.2로 표시됩니다. :)
mrmuggles

당신은 방랑과 같은 몇 가지 가상화를 사용하는 경우 IP를 확인하는 것은 매우 유용
andilabs

3
도커에서 내 REMOTE_ADDR은 내가 생각했던 것이 아닙니다.
Aaron McMillin 2016 년


28

현재 안정 버전 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>태그 가 있어야합니다

정적 파일 :

정적 컨텐츠를 제공하는 경우 다음을 수행하여 CSS, js 및 html을 수집하십시오.

./manage.py collectstatic 


곧 출시 될 django-debug-toolbar 버전에 대한 참고 사항

최신 개발 버전에는 설정 지점 2, 3 및 4에 대한 기본값이 추가되었으므로 개발 버전과 마찬가지로 버그가있는 삶을 조금 더 간단하게 만듭니다. ImproperlyConfigurednginx / uwsgi를 통해 실행할 때 git의 최신 버전에서 오류가 발생했습니다.

어느 쪽이든, 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/django-debug-toolbar.git@ba5af8f6fe7836eef0a0c85dd1e6d7418bc87f75#egg=django_debug_toolbar

2
실제로 <body> </ body> 태그는 필요하지 않습니다 </ html>
Zgr3doo

20

DEBUG = True설정 INTERNAL_IPS에서 클라이언트의 IP 주소, Django Debug Toolbar 수동 구성 까지 모든 것을 시도했습니다 (최신 버전은 미들웨어 및 URL 추가와 같은 모든 구성을 자동으로 수행합니다). 원격 개발 서버에서는 아무것도 작동하지 않았습니다 (로컬에서는 작동했지만). 작동하는 유일한 것은 툴바를 다음과 같이 구성하는 것입니다.

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

도구 모음을 표시 할지를 결정하는 기본 방법을 대체하고 항상 true를 반환합니다.


16

도커

docker 가있는 Docker 컨테이너 에서 Django 서버로 개발 하는 경우 도구 모음 활성화 지침이 작동하지 않습니다. 그 이유는 추가해야 할 실제 주소가 INTERNAL_IPS172.24.0.1과 같이 동적 일 것이라는 사실과 관련이 있습니다. 의 값을 동적으로 설정하는 대신 INTERNAL_IPS간단한 솔루션은 다음과 같이 툴바를 활성화하는 기능을 대체하는 것입니다 settings.py.

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


이것은 또한 방랑자와 같은 다른 동적 라우팅 상황에서도 작동합니다.


호기심에 대한 자세한 내용이 있습니다. 도구 모음을 표시할지 여부를 결정하는 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


15

툴바가 완벽하게 작동합니다. 이 구성으로 :

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

나는 그것이 도움이되기를 바랍니다


2
답에서 IP 주소를 수정해야 할 것입니다. 요즘 대부분의 사람들이 광대역을 사용하고 있기 때문에 대부분의 광대역 연결은 IP 주소를 거의 변경하지 않습니다. 당신은 아마 인터 웹에 매달리는 것을 원하지 않을 것입니다.
Chris Pratt

192.168. *. *는 라우터가 컴퓨터에 할당 한 내부 로컬 IP 주소입니다. 외부 IP 주소가 다릅니다.
Robeezy

@rpod 그것이 누군가가 그것을 편집 한 이유입니다.
Yuji 'Tomita'Tomita

One True Config File을 사용하고 dev에 Debug Toolbar 만 추가 base.py하려는 경우 middleware_classes에 추가하는 대신 이 파일을 local.py: 에 추가 할 수 있습니다 MIDDLEWARE_CLASSES = ('debug_toolbar.middleware.DebugToolbarMiddleware',) + MIDDLEWARE_CLASSES.
Rob Grant

12

10.0.2.2Windows의 INTERNAL_IPS에 추가 하면 내부적으로 방랑자와 함께 사용됩니다.

INTERNAL_IPS = ('10 .0.2.2 ',)

이 작동합니다.


1
OSX에서 Vagrant를 사용하여이 문제를 해결했습니다.
Josh

이것은 가장 정확하고 가장 가능성이 솔루션과 간단한 하나입니다 :) 창에 방랑 7 사용하여 작업 확정
mislavcimpersak을

6

나는 같은 문제가 있었고 마침내 인터넷 검색 후에 문제를 해결했습니다.

INTERNAL_IPS에는 클라이언트의 IP 주소 가 있어야합니다 .


4

툴바가 숨겨져있는 다른 원인은 필요한 정적 파일을 찾을 수없는 경우입니다. debug_toolbar 템플리트는 {{STATIC_URL}} 템플리트 태그를 사용하므로 정적 파일에 디버그 도구 모음이라는 폴더가 있는지 확인하십시오.

collectstatic 관리 명령은 대부분의 설치에서이를 처리해야합니다.


3

나는 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

Django 1.7을 사용하고 있기 때문에 공식 django-debug-toolbar docs에 언급 된 'debug_toolbar.apps.DebugToolbarConfig'대신 추가하여 수정했습니다 .'debug_toolbar'


2

이전 답변에 추가 :

툴바가 표시되지 않지만 html에로드되는 경우 (브라우저에서 사이트 html을 확인하고 아래로 스크롤)

문제는 디버그 툴바 정적 파일을 찾을 수 없다는 것입니다 (예 : /static/debug_toolbar/js/toolbar.js에 대한 404 오류).

다음과 같은 방법으로 고칠 수 있습니다 (nginx 및 apache의 예).

nginx 설정 :

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 폴더를 설정된 정적 파일 폴더로 수동으로 이동


2

필자의 경우 아직 언급되지 않은 또 다른 문제였습니다. 미들웨어 목록에 GZipMiddleware가 있습니다.

디버그 도구 모음의 자동 구성은 디버그 도구 모음의 미들웨어를 맨 위에 놓으면 도구 모음을 추가 할 수없는 gzipped HTML 만 "참조"합니다.

개발 환경에서 GZipMiddleware를 제거했습니다. 디버그 툴바 구성을 수동으로 설정하고 GZip 이후 에 미들웨어를 배치하는 것도 작동합니다.


뷰 수준에서 GZip을 활성화해도 gzip_page툴바가 사라집니다. docs.djangoproject.com/ko/2.0/topics/http/decorators/…
Brachamul

2

제 경우에는 파이썬 컴파일 파일 ( *.pyc) 을 제거해야했습니다.


이 의견에 감사드립니다, 그것은 오늘 아침에 정신 고장을 저장했습니다. 다른 모든 것이 올바르게 보이고이 프로젝트가 나에게 잘 작동하기 전에 작동했다면 이것을 시도하고 해결되는지 확인하십시오. DDT HTML / JS가 페이지에 있었고 모든 것이 잘 보이지만 실제로는 나타나지 않습니다. pyc 파일을 지우고 다시 표시되기 시작했습니다
Shane

2

장고 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를 포함시키는 것을 잊지 마십시오. 디버그 도구 모음은 주로 미들웨어로 구현됩니다. 다음과 같이 설정 모듈에서 활성화하십시오 (django 최신 버전)


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

구식 미들웨어 :( 미들웨어에서 _CLASSES 키 워크가 필요함)

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

1

이것은이 특정 저자에게는 해당되지 않았지만 방금 디버그 툴바가 표시되지 않는 데 어려움을 겪었으며 지적한 모든 작업을 수행 한 후에 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', )


0

템플릿에 닫는 태그가 있는지 확인해야합니다.

내 문제는 템플릿에 일반 html 태그가 없으며 내용을 일반 텍스트로 표시한다는 것입니다. 태그가있는 base.html에서 모든 html 파일을 상속하여 해결했습니다.


0

나를 위해 이것은 127.0.0.1:8000주소 표시 줄에 입력 하는 것보다 localhost:8000INTERNAL_IPS와 일치하지 않는 것보다 간단했습니다 .


0

같은 문제가 발생하여 Apache의 오류 로그를 확인하여 해결했습니다. mod_wsgi를 사용하여 mac OS x에서 실행중인 아파치를 얻었습니다 debug_toolbar의 tamplete 폴더가로드되지 않았습니다

로그 샘플 :

==> /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
  • 물론 파이썬 경로를 변경해야합니다

0

Vagrant를 사용하는 것과 같은 문제가있었습니다. ::ffff:192.168.33.1아래 예제와 같이 INTERNAL_IPS 에 추가 하여이 문제를 해결했습니다 .

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

그것이 192.168.33.10Vagrantfile에있는 개인 네트워크의 IP 임을 기억하십시오 .


0

나는이 문제가 있었고 소스에서 디버그 툴바를 설치해야했다.

버전 1.4에는 PureCSS 및 다른 CSS 프레임 워크를 사용하는 경우 숨겨지는 문제점이 있습니다.

이것이 그것을 해결하는 커밋입니다.

문서는 소스에서 설치하는 방법을 설명합니다.


0

Pycharm 5를 사용하는 사람은 일부 버전에서 템플릿 디버그가 작동하지 않습니다. 5.0.4에서 수정되었으며 영향을받은 vesions-5.0.1, 5.0.2 Check out 문제

그것을 찾기 위해 많은 시간을 보내십시오. 아마 누군가를 도울 것입니다


0

내가 작업 한 코드에서 주 요청을 처리하는 동안 여러 개의 작은 요청이 이루어졌습니다 (매우 구체적인 사용 사례입니다). 그들은 같은 장고의 스레드에 의해 처리 된 요청이었습니다. DjDT (Django 디버그 도구 모음)는이 동작을 예상하지 않으며 DjDT의 도구 모음을 첫 번째 응답에 포함시킨 다음 스레드의 상태를 제거합니다. 따라서 기본 요청이 브라우저로 다시 전송되면 DjDT가 응답에 포함되지 않았습니다.

교훈 : DjDT는 스레드 당 상태를 저장합니다. 첫 번째 응답 후 스레드의 상태를 제거합니다.


0

구식 브라우저는 무엇입니까?

디버그 도구 모음에서 일부 스타일 시트를로드하고 프론트 엔드 문제 일 수 있습니다.


-1

어리석은 일이 있습니다. 아파치 wsgi를 사용하는 경우 .wsgi 파일을 터치하여 코드를 강제로 다시 컴파일해야합니다. 바보 같은 오류를 디버깅하는 데 20 분의 시간을 낭비하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.