Django-debug-toolbar: Filtrar por URL solicitada

Creado en 29 may. 2012  ·  3Comentarios  ·  Fuente: jazzband/django-debug-toolbar

Sé que con la función de devolución de llamada uno puede implementar su propio mecanismo complejo para decidir cuándo mostrar la barra de herramientas de depuración de Django y cuándo no, pero los casos de uso de filtrado comunes (como verificar la IP de los usuarios) deben simplificarse tanto como sea posible.

Por lo tanto, sugiero una opción de configuración para _filtrar (no mostrar) la barra de herramientas en las páginas cuyas URL coinciden con un patrón específico_ (o expresión regular). Por ejemplo, si está utilizando el panel de administración de Django, pero no está desarrollando nada en él, no necesita la barra de herramientas de depuración allí, por lo que sería bueno filtrar la barra de herramientas en todas las solicitudes bajo '^admin/' . Aparece la misma necesidad si tiene una página con muchos iframes pequeños y solo desea depurar la aplicación y las plantillas de Django externas, no las de los iframes pequeños; aquí sería bueno ocultar la barra de herramientas en todas las solicitudes a la aplicación iframed.

Por lo tanto, la sugerencia es tener una o más expresiones regulares para filtrar dónde debe mostrarse la barra de herramientas en función de la URL solicitada. Por ejemplo, como una expresión regular compleja o como una lista de expresiones regulares más simples:

DEBUG_TOOLBAR_CONFIG = ( ... 'HIDE_FILTER_URL': '^admin/|^myapp/someview', ... )
or
DEBUG_TOOLBAR_FILTER_URL = ('^admin/', '^myapp/someview')

Todos 3 comentarios

Entré en el mismo problema y estoy de acuerdo con gw0 en sugerir una implementación de patrones de filtrado comunes para eliminar rápidamente la barra de herramientas de las URL coincidentes. Solo una pista.

De cualquier manera, muy buen trabajo con la poderosa barra de herramientas de depuración. ¡Ustedes molan!

Ahora que el # 324 está arreglado, esto se ha vuelto realmente simple de implementar. Así es como excluiría al administrador:

from debug_toolbar.middleware import show_toolbar

def custom_show_toolbar(request):
    return show_toolbar(request) and not request.path.startswith('/admin/')

Así es como excluiría una serie de prefijos de URL:

from debug_toolbar.middleware import show_toolbar

excluded_urls = ['/foo', '/bar']

def custom_show_toolbar(request):
    excluded = any(request.path.startswith(url) for url in excluded_urls)
    return show_toolbar(request) and not excluded

No creo que sea más fácil usar un DSL para filtrar URL. Plain Python es una herramienta adecuada para esta clase de problemas.

¡Gracias por la sugerencia de todos modos!

Para cualquier otra persona que aterrice aquí, parece que la línea from debug_toolbar.middleware import show_toolbar activa una evaluación temprana de la configuración de las barras de herramientas de depuración de Django, lo que significa que no se leerán los cambios posteriores a la configuración. Necesitaba hacer la importación dentro de la función para que mi configuración surta efecto.

def custom_show_toolbar(request):
    from debug_toolbar.middleware import show_toolbar

    return show_toolbar(request) and not request.path.startswith("/graphql")

DEBUG_TOOLBAR_CONFIG = {"SHOW_TOOLBAR_CALLBACK": custom_show_toolbar}
¿Fue útil esta página
0 / 5 - 0 calificaciones