Django-debug-toolbar: Filterung nach angeforderter URL

Erstellt am 29. Mai 2012  ·  3Kommentare  ·  Quelle: jazzband/django-debug-toolbar

Ich weiß, dass man mit der Callback-Funktion seinen eigenen komplexen Mechanismus implementieren kann, um zu entscheiden, wann die Django Debug Toolbar angezeigt wird und wann nicht, aber gängige Filteranwendungsfälle (wie das Überprüfen der Benutzer-IP) sollten so einfach wie möglich gemacht werden.

Daher schlage ich eine Konfigurationsoption vor, um die Symbolleiste auf Seiten, deren URLs einem bestimmten Muster (oder regulären Ausdruck) entsprechen, _herauszufiltern (nicht anzuzeigen). Wenn Sie zB das Django-Admin-Panel verwenden, aber nichts darin entwickeln, brauchen Sie dort die Debug-Toolbar nicht, also wäre es schön, die Toolbar bei allen Anfragen unter '^admin/' herauszufiltern. Die gleiche Notwendigkeit tritt auf, wenn Sie eine Seite mit vielen kleinen iframes haben und nur die äußere Django-App und die Vorlagen debuggen möchten, nicht die in den kleinen iframes - hier wäre es schön, die Symbolleiste bei allen Anfragen an die iframe-App auszublenden.

Es wird daher vorgeschlagen, einen oder mehrere reguläre Ausdrücke zum Filtern zu verwenden, bei denen die Symbolleiste basierend auf der angeforderten URL angezeigt werden soll. ZB entweder als komplexer Regex oder als Liste einfacherer Regexes:

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

Alle 3 Kommentare

Ich bin auf das gleiche Problem eingetreten und stimme gw0 zu, eine Implementierung gängiger Filtermuster vorzuschlagen, um die Symbolleiste schnell von übereinstimmenden URLs zu entfernen. Nur ein Hinweis.

So oder so, wirklich gute Arbeit die allmächtige Debug-Toolbar. Ihr rockt!

Jetzt, da #324 behoben ist, ist dies wirklich einfach zu implementieren. So schließen Sie den Administrator aus:

from debug_toolbar.middleware import show_toolbar

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

So schließen Sie eine Reihe von URL-Präfixen aus:

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

Ich glaube nicht, dass es einfacher wäre, eine DSL zum Filtern von URLs zu verwenden. Plain Python ist ein geeignetes Werkzeug für diese Klasse von Problemen.

Danke trotzdem für den Vorschlag!

Für alle anderen, die hier landen, scheint es, dass die Zeile from debug_toolbar.middleware import show_toolbar eine frühe Auswertung der Einstellungen der Django Debug Toolbars auslöst, was bedeutet, dass alle nachfolgenden Änderungen an den Einstellungen nicht gelesen werden. Ich musste den Import innerhalb der Funktion durchführen, damit meine Einstellungen wirksam werden.

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}
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen