Django-debug-toolbar: 按请求的 URL 过滤

创建于 2012-05-29  ·  3评论  ·  资料来源: jazzband/django-debug-toolbar

我知道使用回调函数可以实现他自己的复杂机制,决定何时显示 Django 调试工具栏,何时不显示,但常见的过滤用例(如检查用户 IP)应该尽可能简单。

因此,我建议使用配置选项来过滤(不显示)URL 匹配特定模式的页面上的工具栏_(或正则表达式)。 例如,如果您正在使用 Django 管理面板,但没有在其中开发任何内容,则您不需要那里的调试工具栏,因此最好过滤掉'^admin/'下所有请求的工具栏。 如果您有一个包含许多小型 iframe 的页面,并且您只想调试外部 Django 应用程序和模板,而不是小型 iframe 中的那些,则会出现同样的需求 - 在这里隐藏对 iframe 应用程序的所有请求的工具栏会很好。

因此,建议使用一个或多个正则表达式来过滤应根据请求的 URL 显示工具栏的位置。 例如,作为复杂的正则表达式或作为更简单的正则表达式列表:

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

所有3条评论

我遇到了同样的问题,并同意 gw0 建议实施常见过滤模式以快速从匹配的 url 中删除工具栏。 只是一个提示。

无论哪种方式,功能强大的调试工具栏都做得很好。 你们真棒!

现在#324 已修复,这变得非常容易实现。 以下是排除管理员的方法:

from debug_toolbar.middleware import show_toolbar

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

以下是排除一系列 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

我不认为使用 DSL 来过滤 URL 会更容易。 纯 Python 是解决此类问题的合适工具。

还是谢谢你的建议!

对于登陆这里的其他人来说,似乎from debug_toolbar.middleware import show_toolbar行会触发对 Django 调试工具栏设置的早期评估,这意味着不会读取对设置的任何后续更改。 我需要在函数内部进行导入以使我的设置生效。

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}
此页面是否有帮助?
0 / 5 - 0 等级

相关问题

pawamoy picture pawamoy  ·  5评论

Arlington1985 picture Arlington1985  ·  5评论

dvaldivia picture dvaldivia  ·  6评论

mangobowl picture mangobowl  ·  11评论

JoshBradshaw picture JoshBradshaw  ·  6评论