internal_ips instalar debug python django django-debug-toolbar

python - instalar - django-debug-toolbar no aparece



instalar django debug toolbar (23)

Estibador

Si está desarrollando con un servidor Django en un contenedor Docker con acoplador, las instrucciones para habilitar la barra de herramientas no funcionan. La razón está relacionada con el hecho de que la dirección real que necesitaría agregar a INTERNAL_IPS va a ser algo dinámico, como 172.24.0.1. En lugar de tratar de establecer dinámicamente el valor de INTERNAL_IPS , la solución directa es reemplazar la función que habilita la barra de herramientas en su settings.py , por ejemplo:

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


Esto también debería funcionar para otras situaciones de enrutamiento dinámico, como vagabundo.

Aquí hay algunos más detalles para los curiosos. El código en django_debug_tool que determina si mostrar la barra de herramientas examina el valor de REMOTE_ADDR de la REMOTE_ADDR manera:

if request.META.get(''REMOTE_ADDR'', None) not in INTERNAL_IPS: return False

por lo tanto, si no conoce realmente el valor de REMOTE_ADDR debido a su enrutamiento dinámico de REMOTE_ADDR , la barra de herramientas no funcionará. Puede usar el comando de docker network inspect my_docker_network_name para ver los valores de IP dinámico, por ejemplo, la docker network inspect my_docker_network_name

Miré otras preguntas y no puedo entenderlo ...

Hice lo siguiente para instalar django-debug-toolbar:

  1. pip instala django-debug-toolbar
  2. agregado a las clases de middleware:

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 Se agregó INTERNAL_IPS:

INTERNAL_IPS = (''174.121.34.187'',)

4 Se agregó debug_toolbar a las aplicaciones instaladas

No recibo ningún error ni nada, y la barra de herramientas no aparece en ninguna página, ni siquiera en admin.

Incluso agregué el directorio de las plantillas debug_toolbar a mi TEMPLATE_DIRS


Agregue 10.0.2.2 a su INTERNAL_IPS en Windows, se usa con vagabundo internamente

INTERNAL_IPS = (''10 .0.2.2 '',)

Esto debería funcionar.


En mi caso, era otro problema que aún no se ha mencionado aquí: tenía GZipMiddleware en mi lista de middlewares.

Como la configuración automática de la barra de herramientas de depuración coloca el middleware de la barra de herramientas de depuración en la parte superior, solo obtiene el "ver" el código HTML comprimido, al cual no puede agregar la barra de herramientas.

Eliminé GZipMiddleware en mi configuración de desarrollo. Configurar la configuración de barra de herramientas de depuración de forma manual y colocar el middleware después de GZip también debería funcionar.


En mi caso, solo necesitaba eliminar los archivos compilados de python ( *.pyc )


Este no fue el caso para este autor específico, pero acabo de estar luchando con la barra de herramientas Debug que no se muestra y, después de hacer todo lo que señalaron, descubrí que era un problema con el pedido de MIDDLEWARE. Entonces, poner el middleware al principio de la lista podría funcionar. El mio es primero:

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


Intenté todo, desde establecer DEBUG = True , a ajustes de INTERNAL_IPS a la dirección IP de mi cliente e incluso configurar manualmente la barra de herramientas Dyango Debug (tenga en cuenta que las versiones recientes hacen todas las configuraciones automáticamente, como agregar el middleware y las URL). No funcionaba nada en un servidor de desarrollo remoto (aunque funcionaba localmente). Lo único que funcionó fue configurar la barra de herramientas de la siguiente manera:

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

Esto reemplaza el método predeterminado que decide si se debe mostrar la barra de herramientas, y siempre devuelve verdadero.


La barra de herramientas de depuración quiere que la dirección IP en request.META [''REMOTE_ADDR''] se establezca en la configuración INTERNAL_IPS. Escriba una declaración impresa en una de sus vistas como tal:

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

Y luego carga esa página. Asegúrese de que la IP esté en su configuración INTERNAL_IPS en settings.py.

Normalmente creo que podrías determinar la dirección fácilmente al mirar la dirección IP de tu computadora, pero en mi caso estoy ejecutando el servidor en una Caja Virtual con reenvío de puertos ... y quién sabe qué pasó. A pesar de no verlo en ifconfig en el VB o en mi propio SO, la IP que apareció en la tecla REMOTE_ADDR fue lo que hizo el truco de activar la barra de herramientas.


La versión estable actual 0.11.0 requiere que las siguientes cosas sean verdaderas para que se muestre la barra de herramientas:

Archivo de configuración:

  1. DEBUG = True
  2. INTERNAL_IPS para incluir la dirección IP de su navegador, a diferencia de la dirección del servidor. Si navega localmente, esto debería ser INTERNAL_IPS = (''127.0.0.1'',) . Si navega de forma remota, solo especifique su dirección pública .
  3. La aplicación debug_toolbar que se instalará es INSTALLED_APPS = (..., ''debug_toolbar'',)
  4. La clase de middleware de la barra de herramientas de depuración que se agregará, es decir, MIDDLEWARE_CLASSES = (''debug_toolbar.middleware.DebugToolbarMiddleware'', ...) . Debe colocarse tan pronto como sea posible en la lista.

Archivos de plantilla:

  1. Debe ser de tipo text/html
  2. Debe tener una etiqueta de cierre </html>

Archivos estáticos:

Si está sirviendo contenido estático, asegúrese de recolectar el css, js y html haciendo:

./manage.py collectstatic

Nota sobre las próximas versiones de django-debug-toolbar

Más nuevas, las versiones de desarrollo han agregado valores predeterminados para los puntos de configuración 2, 3 y 4, lo que hace la vida un poco más simple, sin embargo, como en cualquier versión de desarrollo, tiene errores. Descubrí que la última versión de git daba como resultado un error configurado ImproperlyConfigured al ejecutar nginx / uwsgi.

De cualquier manera, si quieres instalar la última versión de github run:

pip install -e git+https://github.com/django-debug-toolbar/django-debug-toolbar.git#egg=django-debug-toolbar

También puede clonar una confirmación específica haciendo:

pip install -e git+https://github.com/django-debug-toolbar/django-debug-toolbar.git@ba5af8f6fe7836eef0a0c85dd1e6d7418bc87f75#egg=django_debug_toolbar


Otra cosa que puede hacer que la barra de herramientas permanezca oculta es si no puede encontrar los archivos estáticos necesarios. Las plantillas de debug_toolbar usan la etiqueta de plantilla {{STATIC_URL}}, por lo tanto, asegúrese de que haya una carpeta en sus archivos estáticos llamada barra de herramientas de depuración.

El comando de gestión recopilativo debe encargarse de esto en la mayoría de las instalaciones.


Para cualquiera que esté usando Pycharm 5, la depuración de la plantilla no está funcionando allí en algunas versiones. Reparado en 5.0.4, vesions afectadas - 5.0.1, 5.0.2 Problema de salida

Pase MUCHO tiempo para descubrirlo. Tal vez ayude a alguien


Para mí, esto fue tan simple como escribir 127.0.0.1:8000 en la barra de direcciones, en lugar de localhost:8000 que aparentemente no coincidía con INTERNAL_IPS.


Pregunta estúpida, pero no lo mencionaste, así que ... ¿Qué es DEBUG establecido? No se cargará a menos que sea True .

Si aún no funciona, intente agregar ''127.0.0.1'' a INTERNAL_IPS también.

ACTUALIZAR

Este es un movimiento de última hora, no debería tener que hacer esto, pero mostrará claramente si simplemente hay algún problema de configuración o si hay algún problema mayor.

Agregue lo siguiente a settings.py:

def show_toolbar(request): return True SHOW_TOOLBAR_CALLBACK = show_toolbar

Eso eliminará de manera efectiva todas las verificaciones de la barra de herramientas de depuración para determinar si debería o no cargarse; siempre solo se cargará. Solo déjelo allí para fines de prueba, si lo olvida y lo lanza, todos sus visitantes también podrán ver su barra de herramientas de depuración.

Para la configuración explícita, también vea los documentos oficiales de instalación here .

EDITAR (17/06/2015):

Aparentemente la sintaxis para la opción nuclear ha cambiado. Ahora está en su propio diccionario:

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

Sus tests usan este diccionario.



Tengo el mismo problema, lo resolví mirando el registro de errores de Apache. Tengo apache ejecutándose en mac os x con mod_wsgi La carpeta tamplete de debug_toolbar no se estaba cargando

Muestra de registro:

==> /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"

Acabo de agregar esta línea a mi archivo VirtualHost:

Alias /static/debug_toolbar /Library/Python/2.7/site-packages/debug_toolbar/static/debug_toolbar

  • Por supuesto, debes cambiar tu ruta python

Tengo la barra de herramientas funcionando perfectamente. Con estas configuraciones:

  1. DEBUG = True
  2. INTERNAL_IPS = (''127.0.0.1'', ''192.168.0.1'',)
  3. DEBUG_TOOLBAR_CONFIG = {''INTERCEPT_REDIRECTS'': False,}
  4. El middleware es el primer elemento en 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'', )

Espero que ayude


Tuve el mismo problema al usar Vagrant. Resolví este problema añadiendo ::ffff:192.168.33.1 a INTERNAL_IPS como en el ejemplo siguiente.

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

Recordando que 192.168.33.10 es la IP en mi red privada en Vagrantfile.


Tuve el mismo problema y finalmente lo resolví después de buscar en Google.

En INTERNAL_IPS, necesita tener la dirección IP del cliente .


Tuve este problema y tuve que instalar la barra de herramientas de depuración desde el origen.

La versión 1.4 tiene un problema donde está oculta si usa PureCSS y aparentemente otros marcos de CSS.

This es el compromiso que corrige eso.

Los documentos explican cómo instalar desde la fuente.


Una adición a las respuestas anteriores:

si la barra de herramientas no aparece, pero se carga en el html (verifique el html de su sitio en un navegador, desplácese hacia abajo)

el problema puede ser que no se encuentran los archivos estáticos de la barra de herramientas de depuración (también puede ver esto en los registros de acceso de su sitio, por ejemplo, errores 404 para /static/debug_toolbar/js/toolbar.js)

Se puede arreglar de la siguiente manera a continuación (ejemplos para nginx y apache):

configuración nginx:

location ~* ^/static/debug_toolbar/.+.(ico|css|js)$ { root [path to your python site-packages here]/site-packages/debug_toolbar; }

configuración de Apache:

Alias /static/debug_toolbar [path to your python site-packages here]/site-packages/debug_toolbar/static/debug_toolbar

O:

manage.py collectstatic

más sobre collectstatic aquí: https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#collectstatic

O mueva manualmente la carpeta debug_toolbar de los archivos estáticos debug_toolbar a la carpeta de archivos estáticos establecida


Una cosa estúpida me dio ... que si usas apache wsgi, recuerda tocar el archivo .wsgi para forzar la recompilación de tu código. Solo desperdicio 20 minutos de mi tiempo para depurar el estúpido error :(


debes asegurarte de que haya una etiqueta de cierre en tus plantillas.

Mi problema es que no hay etiquetas html regulares en mis plantillas, simplemente visualizo el contenido en texto plano. Lo resolví heredando cada archivo html de base.html, que tiene una etiqueta.


Probé la configuración de cookiecutter-django de pydanny y funcionó para mí:

# 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

Acabo de modificarlo agregando ''debug_toolbar.apps.DebugToolbarConfig'' lugar de ''debug_toolbar'' como se menciona en los documentos oficiales de django-debug-toolbar , ya que estoy usando Django 1.7.


django 1.8.5:

Tuve que agregar lo siguiente al archivo url.py del proyecto para mostrar la barra de herramientas de depuración. Después de que se muestra la barra de herramientas de depuración.

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: y superior:

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

Además, no olvide incluir la debug_toolbar en su middleware. La barra de herramientas de depuración se implementa principalmente en un middleware. Habilítelo en su módulo de configuración de la siguiente manera: (django versiones más nuevas)

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

Middleware antiguo: (necesita tener _CLASSES keywork en el Middleware)

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