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