Django-debug-toolbar: Filtrando por URL solicitado

Criado em 29 mai. 2012  ·  3Comentários  ·  Fonte: jazzband/django-debug-toolbar

Eu sei que com a função de retorno de chamada pode-se implementar seu próprio mecanismo complexo de decidir quando exibir a Django Debug Toolbar e quando não, mas os casos de uso de filtragem comuns (como verificar o IP dos usuários) devem ser tornados o mais simples possível.

Portanto, sugiro uma opção de configuração para _filtrar (não mostrar) a barra de ferramentas nas páginas cujos URLs correspondem a um padrão específico_ (ou expressão regular). Por exemplo, se você está usando o painel de administração do Django, mas não está desenvolvendo nada nele, você não precisa da barra de ferramentas de depuração lá, então seria bom filtrar a barra de ferramentas em todas as solicitações em '^admin/' . A mesma necessidade aparece se você tiver uma página com muitos iframes pequenos e quiser apenas depurar o aplicativo Django externo e os modelos, não aqueles nos iframes pequenos - aqui seria bom ocultar a barra de ferramentas em todas as solicitações ao aplicativo com iframes.

A sugestão é, portanto, ter uma ou mais expressões regulares para filtrar onde a barra de ferramentas deve ser mostrada com base na URL solicitada. Por exemplo, como um regex complexo ou como uma lista de regexes mais simples:

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

Todos 3 comentários

Eu entrei no mesmo problema e concordo com gw0 em sugerir uma implementação de padrões de filtragem comuns para remover rapidamente a barra de ferramentas de URLs correspondentes. Apenas uma dica.

De qualquer forma, realmente bom trabalho a toda-poderosa barra de ferramentas de depuração. Vocês são foda!

Agora que o # 324 foi corrigido, isso se tornou muito simples de implementar. Veja como você excluiria o administrador:

from debug_toolbar.middleware import show_toolbar

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

Veja como você excluiria uma série de prefixos 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

Não acho que seria mais fácil usar uma DSL para filtrar URLs. Python simples é uma ferramenta adequada para essa classe de problemas.

Obrigado pela sugestão de qualquer maneira!

Para qualquer pessoa que chegue aqui, parece que a linha from debug_toolbar.middleware import show_toolbar dispara uma avaliação antecipada das configurações das barras de ferramentas de depuração do Django, o que significa que quaisquer alterações subsequentes nas configurações não serão lidas. Eu precisava fazer a importação dentro da função para que minhas configurações entrassem em vigor.

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}
Esta página foi útil?
0 / 5 - 0 avaliações