programing

장고-고-고-고-고-고-고-고-고가 나타나지 않음

bestprogram 2023. 6. 6. 10:22

장고-고-고-고-고-고-고-고-고가 나타나지 않음

다른 질문들을 봤는데 이해할 수가 없어요

django-debug-toolbar를 설치하기 위해 다음을 수행했습니다.

  1. pip 설치된 장고-고-고-고-고-고-고-고.
  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 =('129.121.34.165',)

4 설치된 앱에 debug_toolbar 추가

오류나 오류가 발생하지 않으며, 툴바가 관리자도 아닌 어느 페이지에도 나타나지 않습니다.

를 제 심지debug_toolbar에 추가했습니다.TEMPLATE_DIRS

란?DEBUG로 설정하시겠습니까?그렇지 않으면 로딩되지 않습니다.True.

안 ''127.0.0.1'에 추가해 .INTERNAL_IPS뿐만 아니라.

갱신하다

이것은 최후의 수단이므로 이 작업을 수행할 필요는 없지만 구성 문제가 있는지 또는 더 큰 문제가 있는지 여부가 명확하게 표시됩니다.

설정에 다음을 추가합니다.py:

def show_toolbar(request):
    return True
SHOW_TOOLBAR_CALLBACK = show_toolbar

그러면 디버그 도구 모음에서 자체 로드 여부를 결정하는 모든 검사가 효과적으로 제거됩니다. 항상 로드됩니다.테스트용으로만 남겨두십시오. 잊어버리고 실행하면 모든 방문자가 디버그 도구 모음을 볼 수 있습니다.

명시적인 구성에 대해서는 여기에 있는 공식 설치 문서도 참조하십시오.

EDIT(2015년 6월 17일):

핵 옵션의 구문이 변경된 것 같습니다.이제는 자체 사전에 나와 있습니다.

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

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

디버그 도구 모음에서 request.METa['REMOTE_ADDR']의 IP 주소를 INTERNAL_IPS 설정으로 설정하려고 합니다.다음과 같은 보기 중 하나에 인쇄 문을 삽입합니다.

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

그런 다음 페이지를 로드합니다.IP가 settings.py 의 INTERNAL_IPS 설정에 있는지 확인합니다.

일반적으로 컴퓨터의 IP 주소를 보면 주소를 쉽게 확인할 수 있을 것으로 생각합니다. 하지만 포트 포워딩 기능이 있는 가상 상자에서 서버를 실행하고 있습니다.무슨 일이 있었는지 누가 알겠어요VB 또는 내 운영 체제의 ifconfig 어디에서도 볼 수 없음에도 불구하고 REMOTE_ADDR 키에 표시된 IP는 툴바를 활성화하는 비결이었습니다.

가 없다면, 인 종결이 .<body>스티커 -

참고: 디버그 도구 모음은 응답의 mimetype이 text/html 또는 application/xhtml+xml이고 닫는 태그가 포함된 경우에만 자체적으로 표시됩니다.

도커

도커가 있는 도커 컨테이너에서 장고 서버를 개발하는 경우 도구 모음을 활성화하는 지침이 작동하지 않습니다.그 이유는 당신이 추가해야 할 실제 주소와 관련이 있습니다.INTERNAL_IPS172165.24.0.1과 동적인 이 될 입니다.으로 동적것값는보의 보다는.INTERNAL_IPS간한해툴활바성기대것능에서 하는 것입니다.settings.py예:

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

This should also work for other dynamic routing situations, like Vagrant or Heroku.

호기심 많은 사람들을 위한 몇 가지 세부 사항이 있습니다.도구 모음을 표시할지 여부를 결정하는 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

현재 안정적인 버전 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에 대한 기본값이 추가되어 있지만 다른 개발 버전과 마찬가지로 생활이 좀 더 단순해집니다.나는 git의 최신 버전이 결과적으로ImproperlyConfigurednginx/uwsgi를 할 때 했습니다.

어느 쪽이든 github에서 최신 버전을 설치하려면 다음을 실행합니다.

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클라이언트의 IP 주소로 이동하고 수동으로 장고 디버그 도구 모음을 구성할 수도 있습니다(최근 버전에서는 미들웨어 및 URL 추가와 같은 모든 구성이 자동으로 수행됨).원격 개발 서버에서는 로컬로 작동했지만 아무 것도 작동하지 않았습니다.도구 모음을 다음과 같이 구성하는 것이 유일하게 작동했습니다.

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

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

도구 모음이 완벽하게 작동합니다.다음 구성을 사용할 경우:

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

도움이 되길 바랍니다.

더하다10.0.2.2으로 Windows 의 INTERNAL_과 됩니다.IPS에서 내부적으로 부랑자와 함께 사용됩니다.

INTERNAL_IPS = ( '10.0.2.2', )

이게 통할 겁니다.

저도 같은 문제가 있었고 구글 검색을 통해 해결했습니다.

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

필요한 정적 파일을 찾을 수 없는 경우에도 도구 모음이 숨겨질 수 있습니다.debug_toolbar 템플릿은 {{STATIC_URL} 템플릿 태그를 사용하므로 정적 파일에 디버그 도구 모음이라는 폴더가 있는지 확인합니다.

대부분의 설치에서는 collect static management 명령을 사용하여 이 문제를 해결해야 합니다.

이 질문이 조금 오래된 것으로 알고 있지만, 오늘 도커와 함께 장고 도구 모음을 설치하고 동일한 문제를 발견했습니다. 이것으로 해결되었습니다.

INTERNAL_IPS = ["127.0.0.1", "10.0.2.2"]

import socket
hostname, _, ips = socket.gethostbyname_ex(socket.gethostname())
INTERNAL_IPS += [".".join(ip.split(".")[:-1] + ["1"]) for ip in ips]

제가 댓글에서 읽었듯이, 문제는 도커가 동적 IP를 사용한다는 것입니다. 이것을 해결하기 위해 우리는 위의 코드에서 IP를 얻을 수 있습니다.

이전 답변에 추가된 내용:

툴바가 나타나지 않지만 HTML로 로드되는 경우(브라우저에서 사이트 html 확인, 아래로 스크롤)

디버그 도구 모음 정적 파일을 찾을 수 없는 문제일 수 있습니다(이 문제는 사이트의 액세스 로그에서도 확인할 수 있습니다(예: /static/debug_debug/js/debug.js에 대한 404개 오류).

그러면 다음과 같은 방법으로 수정할 수 있습니다(nginx 및 apache의 예).

nginx 구성:

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

저는 피대니의 쿠키커터 장고에서 구성을 시도했고 그것은 저에게 효과가 있었습니다.

# 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을 사용하고 있습니다.

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 키워크 필요)

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

나에게 이것은 타이핑하는 것만큼 간단했습니다.127.0.0.1:8000할 수 있습니다.localhost:8000내부_IPS와 일치하지 않는 것 같습니다.

저의 경우, 아직 여기서 언급되지 않은 또 다른 문제였습니다.저는 제 미들웨어 목록에 GZip 미들웨어가 있었습니다.

디버그 툴바의 자동 구성은 디버그 툴바의 미들웨어를 맨 위에 배치하기 때문에 툴바를 추가할 수 없는 gzipped HTML만 가져옵니다.

개발 설정에서 GZip Middleware를 제거했습니다.디버그 도구 모음의 구성을 수동으로 설정하고 GZip 뒤에 미들웨어를 배치하는 것도 작동해야 합니다.

저의 경우, 저는 단지 파이썬 컴파일 파일을 제거하기만 하면 되었습니다.*.pyc)

  1. 설명서에 나와 있는 모든 내용을 구성했다고 말씀하신 것처럼 debug_toolbar가 여전히 표시되지 않았습니다.그리고 파이어폭스에서 시도해봤는데, 잘 작동했습니다.

  2. 그런 다음 크롬에서 웹페이지를 검사하고 classname class="hidden"을 변경합니다.변경하거나 제거할 수 있습니다.

  3. 경영을 맡다py collect static 및 위의 단계를 반복합니다.

  4. 실제로 편집을 통해 2단계와 3단계를 건너뛸 수 있습니다.

    .djdt-hidden{ display: none;}

    길에서

    debug_debug/static/debug_debug/debug/debug.debug

  5. 설정의 어딘가에 이 두 줄을 추가합니다.파이의

    import mimetypes

    mimetypes.add_type("application/javascript", ".js", True)

  6. URL로파이의

    import debug_toolbar

    urlpatterns += [ path('__debug__/', include(debug_toolbar.urls)),]

  7. 참조 django 디버그 도구 모음 설치 사용

  1. 그래도 작동하지 않으면 launch.json을 생성하고 디버깅을 위해 다른 포트 번호를 언급합니다.

` {

"version": "0.2.0",
"configurations": [
    
    {
        "name": "Python: Django",
        "type": "python",
        "request": "launch",
        "program": "${workspaceFolder}\\manage.py",
        "args": [
            "runserver",
            "9000",
        ],
        "django": true
    }
]

} `

  1. 중요한 단계: debug_toolbar를 표시하기 위해 웹 페이지/템플릿이 올바른 형식인지 확인합니다.HTML 상용판 템플릿을 사용하여 페이지를 편집하거나 다음과 같은 누락된 요소/항목을 추가합니다.

    <html></html> <body></body> <head><head>

등을 장고 템플릿으로 이동하거나 레이아웃을 가져옵니다.

이 특정 작성자의 경우는 아니었지만 디버그 도구 모음이 표시되지 않아 어려움을 겪었고 그들이 지적한 모든 작업을 수행한 후 미들웨어 주문에 문제가 있다는 것을 알게 되었습니다.따라서 미들웨어를 목록에 조기에 포함시키는 것이 효과적일 수 있습니다.내 것은 먼저:

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

저도 같은 문제가 나왔는데, 아파치의 오류 로그를 보고 해결했습니다.mod_wsgi를 사용하여 macosx에서 apache를 실행하고 있습니다. 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
  • 물론 파이썬 경로를 변경해야 합니다.

저한테는 효과가 있어요.

#urls.py
if settings.DEBUG:
    from django.conf.urls.static import static
    import debug_toolbar
    import mimetypes

    mimetypes.add_type("application/javascript", ".js", True)

    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

    urlpatterns = [path('__debug__/', include(debug_toolbar.urls)), ] + urlpatterns

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

문제는 템플릿에 일반 html 태그가 없다는 것입니다. 내용을 일반 텍스트로 표시합니다.태그가 있는 base.html에서 html 파일을 모두 상속받아 해결했습니다.

저도 Vagrant를 사용하는 것과 같은 문제를 겪었습니다.나는 이 문제를 추가함으로써 해결했습니다.::ffff:192.168.33.1아래 예제와 같이 INTERNAL_IPS에 적용됩니다.

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

일을 192.168.33.10Vagrant 파일에 있는 내 전용 네트워크의 IP입니다.

이 문제가 발생하여 소스에서 디버그 도구 모음을 설치해야 했습니다.

버전 1.4는 PureCSS와 다른 CSS 프레임워크를 사용할 경우 숨겨진 문제가 있습니다.

이것은 그것을 고치는 약속입니다.

설명서에서는 원본에서 설치하는 방법을 설명합니다.

Pycharm 5를 사용하는 사용자는 일부 버전에서는 템플릿 디버그가 작동하지 않습니다.5.0.4에서 수정됨, 해당 버전 - 5.0.1, 5.0.2 문제 확인

그것을 알아내기 위해 많은 시간을 투자하세요.아마도 누군가를 도울 것입니다.

제가 작업하던 코드에서 메인 요청을 처리하는 동안 여러 개의 작은 요청이 발생했습니다(매우 구체적인 사용 사례입니다).그것들은 같은 장고의 스레드에 의해 처리된 요청들이었습니다.DjDT(Django debug toolbar)는 이 동작을 예상하지 않으며 첫 번째 응답에 DjDT의 도구 모음을 포함한 다음 스레드에 대한 상태를 제거합니다.따라서 메인 요청이 브라우저로 다시 전송되었을 때 DjDT는 응답에 포함되지 않았습니다.

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

저를 사로잡은 것은 구식 브라우저입니다!

디버그 도구 모음에서 일부 스타일시트를 로드하여 프런트 엔드 문제일 수 있음을 발견했습니다.

많은 시행착오 끝에, 이것은 Django=3.1에서 저에게 효과가 있었습니다. 모든 internal_ip, middleware를 작성하고 url에 추가한 후, 이 코드를 아래의 settings.py 에 넣으십시오.

def show_toolbar(request):
return True


DEBUG_TOOLBAR_CONFIG = {
"SHOW_TOOLBAR_CALLBACK": show_toolbar,
'INSERT_BEFORE': '</head>'
}

그들 중 많은 사람들이 SHOW_TOOLBAR_CALLBACK을 제안했지만, 저의 경우 'INSERT_BEFORE'를 추가한 후에야 작동했습니다.

추가 후 동일한 문제가 발생합니다.

urls.py
mimetypes.add_type("application/javascript", ".js", True)
urlpatterns = [...

그리고.

DEBUG_TOOLBAR_CONFIG = {
 'INTERCEPT_REDIRECTS': False,
 'SHOW_TOOLBAR_CALLBACK': lambda request: True,
 'SHOW_TEMPLATE_CONTEXT': True,
 'INSERT_BEFORE': '</head>'
}

에 클래스 javascripts가 .djdt-hidden 숨김 .

<div id="djDebug" class="djdt-hidden" dir="ltr" data-default-show="true">

사용하고 있었습니다.GoogleChrome

FireFox 모음 아이콘이 .

Windows를 사용하는 경우 레지스트리에서 가져온 것일 수 있습니다. HKEY_CLASSES_ROOT.js\Content Type을 text/plain 대신 text/javascript로 설정합니다.

언급URL : https://stackoverflow.com/questions/10517765/django-debug-toolbar-not-showing-up