如何配置Django Debug Toolbar排除指定URL不加载调试工具栏
调整方法
你只需要修改现有配置中的SHOW_TOOLBAR_CALLBACK回调函数,增加特定页面的排除判断即可,不需要改动其他逻辑。
按URL路径排除(最常用)
直接修改你的settings.py配置,调整后的完整配置参考如下:
import os # This file contains Django settings for lower environments that use the Django Debug Toolbar. # Currently those envronments are DEV and QA. from core.settings import * # noqa: F403 # We need the ability to disable debug_toolbar for regression tests. DEBUG = os.getenv('DEBUG_MODE', 'FALSE').upper() == 'TRUE' # 在此处配置需要排除Debug Toolbar的页面路径前缀 EXCLUDED_DEBUG_TOOLBAR_PATHS = [ "/heavy/sql-report/", # 替换成你实际的大SQL页面路径 "/batch/data-export/", ] def toolbar_callback(request): # 原有DEBUG开关判断 if not DEBUG: return False # 命中排除路径则不加载toolbar req_path = request.path for path in EXCLUDED_DEBUG_TOOLBAR_PATHS: if req_path.startswith(path): return False return True DEBUG_TOOLBAR_CONFIG = { "SHOW_TOOLBAR_CALLBACK": toolbar_callback, } INSTALLED_APPS += ['debug_toolbar', ] # noqa: F405 MIDDLEWARE += ['debug_toolbar.middleware.DebugToolbarMiddleware', ] # noqa: F405
其他可选判断规则
- 如果你不想硬编码URL路径,可以通过
request.resolver_match.url_name(路由名)、request.resolver_match.namespace(路由命名空间)做匹配,后续调整路由路径时不需要同步修改排除规则 - 也可以根据请求参数、访问用户身份、响应类型等自定义规则判断,只要回调函数返回
False,Debug Toolbar就不会注入页面,也不会执行SQL采集、面板渲染的耗时逻辑,完全避免请求超时问题。
注意:不需要调整Debug Toolbar中间件的注册顺序,回调返回
False时中间件会直接跳过所有toolbar相关处理,不会产生额外性能开销。
内容的提问来源于stack exchange,提问作者Mahak Malik
相关产品推荐
相关产品推荐

