Django-debug-toolbar: Filtrage par URL demandée

Créé le 29 mai 2012  ·  3Commentaires  ·  Source: jazzband/django-debug-toolbar

Je sais qu'avec la fonction de rappel, on peut implémenter son propre mécanisme complexe pour décider quand afficher la barre d'outils de débogage Django et quand ne pas l'afficher, mais les cas d'utilisation de filtrage courants (comme la vérification de l'IP des utilisateurs) doivent être rendus aussi simples que possible.

Par conséquent, je suggère une option de configuration pour _filtrer (pas afficher) la barre d'outils sur les pages dont les URL correspondent à un modèle spécifique_ (ou une expression régulière). Par exemple, si vous utilisez le panneau d'administration de Django, mais que vous ne développez rien dedans, vous n'avez pas besoin de la barre d'outils de débogage, il serait donc bien de filtrer la barre d'outils sur toutes les requêtes inférieures à '^admin/' . Le même besoin apparaît si vous avez une page avec de nombreux petits iframes et que vous voulez juste déboguer l'application et les modèles Django extérieurs, pas ceux des petits iframes - ici, il serait bien de masquer la barre d'outils sur toutes les demandes adressées à l'application iframe.

La suggestion est donc d'avoir une ou plusieurs expressions régulières pour filtrer où la barre d'outils doit être affichée en fonction de l'URL demandée. Par exemple, soit sous forme d'expression régulière complexe, soit sous forme de liste d'expressions régulières plus simples :

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

Tous les 3 commentaires

J'ai abordé le même problème et suis d'accord avec gw0 pour suggérer une implémentation de modèles de filtrage communs pour supprimer rapidement la barre d'outils des URL correspondantes. Juste un indice.

Quoi qu'il en soit, très bon travail de la toute-puissante barre d'outils de débogage. Vous êtes top les gars!

Maintenant que #324 est corrigé, cela est devenu très simple à mettre en œuvre. Voici comment exclure l'administrateur :

from debug_toolbar.middleware import show_toolbar

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

Voici comment exclure une série de préfixes d'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

Je ne pense pas qu'il serait plus facile d'utiliser un DSL pour filtrer les URL. Plain Python est un outil approprié pour cette classe de problèmes.

Merci quand même pour la suggestion!

Pour tous ceux qui atterrissent ici, il semble que la ligne from debug_toolbar.middleware import show_toolbar déclenche une évaluation précoce des paramètres de Django Debug Toolbars, ce qui signifie que toute modification ultérieure des paramètres ne sera pas lue. J'avais besoin de faire l'importation dans la fonction pour que mes paramètres prennent effet.

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}
Cette page vous a été utile?
0 / 5 - 0 notes