Django(73)django-debug-toolbar调试工具

2023-05-16

介绍

Django框架的调试工具栏使用django-debug-toolbar库,是一组可配置的面板,显示有关当前请求/响应的各种调试信息,点击时,显示有关面板内容的更多详细信息。

应用

1. 安装

pip install django-debug-toolbar

2. settings配置

先决条件:必须确认django.contrib.staticfiles 正确安装并且启用

INSTALLED_APPS = [
    # ...
    'django.contrib.staticfiles',
    # ...
    'debug_toolbar',
]

STATIC_URL = '/static/'

3. urls.py路由配置

在主应用下的根urls.py中的最下面添加如下代码:

if "debug_toolbar" in settings.INSTALLED_APPS:
    import debug_toolbar
    urlpatterns = [
        path('__debug__/', include(debug_toolbar.urls)),
    ] + urlpatterns

说明

  • 这里使用 '\__debug__' 作为路径访问,可以设置任意的路径名,只要能轻易区分一般应用
  • 如果放在子应用的urls.py下的话,会抛出NoReverseMatch 'djdt' is not a registered namespace异常

4. 启动中间件

调试工具栏主要在中间件中实现:

MIDDLEWARE = [
    # ...
    'debug_toolbar.middleware.DebugToolbarMiddleware',
    # ...
]

注意:这个中间件尽可能配置到最前面,但是,必须要要放在处理编码和响应内容的中间件后面,比如我们要是使用了GZipMiddleware,就要把DebugToolbarMiddleware放在GZipMiddleware后面

5. 设置内部IP

调试工具栏只会允许特定的ip访问,在settingsINTERNAL_IPS中配置

INTERNAL_IPS = [
    # ...
    '127.0.0.1',
    # ...
]

6. 访问

访问应用的任意页面,在页面的右上角会有一个 DJDT的悬浮窗
点击后就会出现调试工具栏

7. 面板功能

调试工具栏上有多个功能,下面介绍作用

  • Versions :代表是哪个django版本
  • Timer : 用来计时的,判断加载当前页面总共花的时间
  • Settings : 读取django中的配置信息
  • Headers : 当前请求头和响应头信息
  • Request: 当前请求的相关信息(视图函数,Cookie信息,Session信息等)
  • SQL:查看当前界面执行的SQL语句
  • StaticFiles:当前界面加载的静态文件
  • Templates:当前界面用的模板
  • Cache:缓存信息
  • Signals:信号
  • Logging:当前界面日志信息
  • Redirects:当前界面的重定向信息

8. 面板配置

django-debug-toolbar默认使用全面板,默认的全局配置在 debug_toolbar.settings.CONFIG_DEFAULTS

PANELS_DEFAULTS = [
    "debug_toolbar.panels.versions.VersionsPanel",
    "debug_toolbar.panels.timer.TimerPanel",
    "debug_toolbar.panels.settings.SettingsPanel",
    "debug_toolbar.panels.headers.HeadersPanel",
    "debug_toolbar.panels.request.RequestPanel",
    "debug_toolbar.panels.sql.SQLPanel",
    "debug_toolbar.panels.staticfiles.StaticFilesPanel",
    "debug_toolbar.panels.templates.TemplatesPanel",
    "debug_toolbar.panels.cache.CachePanel",
    "debug_toolbar.panels.signals.SignalsPanel",
    "debug_toolbar.panels.logging.LoggingPanel",
    "debug_toolbar.panels.redirects.RedirectsPanel",
]

如果不使用默认的全功能面板,那么在settings中配置 DEBUG_TOOLBAR_PANELS 即可,示例如下:

DEBUG_TOOLBAR_PANELS = [
    "debug_toolbar.panels.timer.TimerPanel",
    "debug_toolbar.panels.headers.HeadersPanel",
    "debug_toolbar.panels.request.RequestPanel",
    "debug_toolbar.panels.templates.TemplatesPanel",
]

9. 工具栏配置

settings中配置 DEBUG_TOOLBAR_CONFIG 覆盖默认配置,分为2部分,一部分适用于工具栏本身,另一部分适用于某些特定面板

DEBUG_TOOLBAR_CONFIG = {
    # Toolbar options
    "DISABLE_PANELS": {"debug_toolbar.panels.redirects.RedirectsPanel"},
    "INSERT_BEFORE": "</body>",
    "RENDER_PANELS": None,
    "RESULTS_CACHE_SIZE": 10,
    "ROOT_TAG_EXTRA_ATTRS": "",
    "SHOW_COLLAPSED": False,
    "SHOW_TOOLBAR_CALLBACK": "debug_toolbar.middleware.show_toolbar",
    # Panel options
    "EXTRA_SIGNALS": [],
    "ENABLE_STACKTRACES": True,
    "HIDE_IN_STACKTRACES": (
        "socketserver" if six.PY3 else "SocketServer",
        "threading",
        "wsgiref",
        "debug_toolbar",
        "django.db",
        "django.core.handlers",
        "django.core.servers",
        "django.utils.decorators",
        "django.utils.deprecation",
        "django.utils.functional",
    ),
    "PROFILER_MAX_DEPTH": 10,
    "SHOW_TEMPLATE_CONTEXT": True,
    "SKIP_TEMPLATE_PREFIXES": ("django/forms/widgets/", "admin/widgets/"),
    "SQL_WARNING_THRESHOLD": 500,  # milliseconds
}

工具栏选项

  • DISABLE_PANELS
    默认: {'debug_toolbar.panels.redirects.RedirectsPanel'}
    此设置是要禁用(但仍显示)的面板的完整Python路径的集合

  • INSERT_BEFORE
    默认: '</body>'
    工具栏在HTML中搜索此字符串并在之前插入。

  • RENDER_PANELS
    默认: None
    如果设置为False,调试工具栏将把面板的内容保留在服务器上的内存中并按需加载它们。如果设置为True,则会在每个页面内呈现面板。这可能会降低页面呈现速度,但在多进程服务器上需要这样做,例如,如果在生产中部署工具栏(不建议这样做)。
    默认值None告诉工具栏自动执行正确的操作,具体取决于WSGI容器是否运行多个进程。此设置允许您在需要时强制执行不同的操作。

  • RESULTS_CACHE_SIZE
    默认: 10
    工具栏在内存中保持的结果缓存数量。

  • ROOT_TAG_EXTRA_ATTRS
    默认: ''
    此设置将注入根模板div中,以避免与客户端框架发生冲突。例如,将调试工具栏与Angular.js一起使用时,将其设置为'ng-non-bindable''class="ng-non-bindable"'

  • SHOW_COLLAPSED
    默认: False
    如果更改为True,则默认情况下将折叠工具栏。

  • SHOW_TOOLBAR_CALLBACK
    默认: 'debug_toolbar.middleware.show_toolbar'
    这是用于确定工具栏是否应显示的函数路径,默认检测DEBUG设置为True,并且访问IP必须在INTERNAL_IPS中,代码如下:

def show_toolbar(request):
    """
    Default function to determine whether to show the toolbar on a given page.
    """
    if request.META.get("REMOTE_ADDR", None) not in settings.INTERNAL_IPS:
        return False

    return bool(settings.DEBUG)

可以设置自定义的检测函数路径

面板选项

  • EXTRA_SIGNALS
    默认: []
    面板:信号
    可能在项目中的自定义信号列表,定义为信号的Python路径。

  • ENABLE_STACKTRACES
    默认: True
    面板:缓存,SQL
    如果设置为True,则将显示SQL查询和缓存调用的堆栈跟踪。启用堆栈跟踪会增加执行查询时使用的CPU时间。

  • HIDE_IN_STACKTRACES
    默认值:('socketserver', 'threading', 'wsgiref', 'debug_toolbar', 'django')`
    面板:缓存,SQL
    用于消除与服务器相关的堆栈跟踪,这可能导致巨大的DOM结构和工具栏渲染延迟。

  • PROFILER_MAX_DEPTH
    默认: 10
    面板:剖析
    此设置会影响分析器分析中的函数调用深度。

  • SHOW_TEMPLATE_CONTEXT
    默认: True
    面板:模板
    如果设置为True则模板的上下文将包含在模板调试面板中。如果项目中拥有大型模板上下文,或者具有不希望被评估的惰性数据结构的模板上下文,则关闭此选项非常有用。

  • SKIP_TEMPLATE_PREFIXES
    默认: ('django/forms/widgets/', 'admin/widgets/')
    面板:模板
    收集渲染的模板和上下文时,将跳过以这些字符串开头的模板。默认情况下会跳过基于模板的表单小部件,因为面板的HTML可以轻松地增长到数百兆字节,包含许多表单字段和许多选项。

  • SQL_WARNING_THRESHOLD
    默认: 500
    面板:SQL
    SQL面板突出显示执行时间超过这段时间(以毫秒为单位)的查询

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django(73)django-debug-toolbar调试工具 的相关文章

随机推荐

  • linux学习3 — ubuntu中的文件

    目录 1 ubuntu都有哪些系统文件 2 linux文件类型 amp 访问权限 2 1 linux的文件类型 2 2 linux文件的访问权限 3 linux中的文件路径 3 1 绝对路径 3 2 相对路径 4 linux中文件的基本操作
  • Fatal Python error: initfsencoding: unable to load the file system codec问题的解决

    因为项目需要最近在搞c 43 43 配置相关的东西 xff0c 我自己电脑常用的系统是Ubuntu xff0c 在做之前检查了下win环境 xff0c 我的电脑果真没让我失望啊 xff0c 真的是做一件事要踩完所有的坑才肯罢休 xff01
  • c++嵌入python

    环境 xff1a win10 Visual studio 2017 python3 6 5 重点 xff1a 知道自己python的安装路径python安装路径中找到libs目录 xff0c 复制libs目录下python36 lib xf
  • 目标检测中IOU GIOU DIOU CIOU的理解

    IOU论文 xff1a link GIOU论文 xff1a link DIOU论文 xff1a link CIOU论文 xff1a link 原始的IOU存在以下问题 xff1a 一般的二阶段网络边框回归IOU 0 5 xff0c 不会对框
  • kindle 新手入门

    点我进入原文 其他一些kindle 的资源 xff1a 1 电子书 xff0c 很全 http www kindlepush com main 2 漫画 xff1a http www pixvol com 3 kindle 推送 xff1a
  • vscode+darknet_ros+单步调试

    开发环境 ubuntu 20 04 vscode rtx2080ti 怎么配置看之前的文章 darknet ros环境 2 1 下载 span class token function mkdir span p darknet ros yo
  • 编译带cuda的opencv4.5.5(4.2.0+cuda11.1+cudnn8.0.5未成功)

    活了这么大也没中过奖 xff0c 也没中过超过20块钱的彩票 xff0c 居然在这个地方中奖了 xff0c 很犀利 xff01 xff01 最终换成4 5 5版本的成功了 cmake的内容 cmake span class token op
  • ubuntu搭建 自动驾驶单目3d检测smoke 环境

    论文 xff1a SMOKE xff1a Single Stage Monocular 3D Object Detection via Keypoint Estimation 论文链接 源码 操作系统 xff1a ubuntu18 04 显
  • vs2019修改编码方式为UTF-8的方法

    原因 git上下载的项目编码有问题 xff0c 不识别中文或者编码不是utf 8 xff0c 之前其实也遇到过 xff0c 处理完了就忘记了 xff0c 又遇到这种糟心的事情了 xff0c 就顺手记录下 方法 检查系统的语言编码 设置 gt
  • windows 10上源码编译libjpeg-turbo和使用教程

    参考文献 Windows 配置libjpeg turbo并在python中调用 windows 10上源码编译libjpeg turbo和使用教程 compile and use libjpeg turbo on windows 10 环境
  • Pycharm及VScode 安装Copilot 踩坑

    首先在官网申请copilot使用权限 xff0c 经过一段时间等待 xff0c 就会给你授权 接下来就是针对本地的IDE集成插件对于VSCode xff0c 直接按照官网教学 xff08 VScode插件安装 xff09 即可 xff0c
  • gitlab基本配置和使用

    目录 一 gitlab的SSH配置1 下载安装git2 生成SSH keys 二 fork自己的库1 进入原库2 项目管理3 把自己fork的库clone到本地 三 如何更新自己的fork库1 先对我们现在的fork库内的文件进行修改2 进
  • 如何把word文档保存为.md文件

    第一种 插件 插件安装 一直next 安装后不用运行 打开想要转换的word文档 xff0c 选择 34 另存为 34 安装成功后 xff0c 保存格式中会自动出现md后缀格式的选项 选择 md格式 xff0c 保存即可 第二种 在线转换
  • VirtualBox安装Arch Linux2019并迁移物理机

    VirtualBox安装Arch Linux2019并迁移物理机 安装Arch Linux下载版本使用VirtualBox安装安装grub设置网络和ssh 迁移到物理机1 正常识别U盘2 拷贝U盘3 启动物理机4 更新虚拟内存盘 安装Arc
  • P4180 [BJWC2010]严格次小生成树(kruskal + 倍增 + lca)

    思路 xff1a xff08 1 xff09 先求最小生成树 xff0c 重新建图 xff08 2 xff09 遍历所有非树边 xff0c 用树上倍增求LCA的方法求出非树边两节点之间树边中的最大边和次大边 xff0c 再将非树边权值与最大
  • JUnit测试控制台输出和System.exit(0)

    JUnit测试中可以用assertTrue xff0c assertEquals等断言对代码进行简单的测试 xff1a 如返回的布尔类型是否为真 xff0c 所得的数据结果是否与预想的一样 xff0c 有时程序可能会为健壮性做一些向控制台输
  • vsphere client克隆虚拟机后配置(DNS解析+MAC地址+UUID+ip+主机名)

    1 克隆模板机 在想要克隆的虚机上右键点击克隆 xff0c 一直下一步 参考 xff1a https www jianshu com p ebba00a0e503 2 修改配置 2 1修改主机名 临时修改主机名 span class tok
  • vue3 computed计算属性

    lt DOCTYPE html gt lt html lang 61 34 en 34 gt lt head gt lt meta charset 61 34 UTF 8 34 gt lt meta http equiv 61 34 X U
  • 使用VNC远程连接centos桌面的最简便方法

    第一步 在centos上安装VNC server 这里我们安装tigervnc xff0c 也可以安装其他vnc服务器 xff0c 例如realvnc tightvnc ultravnc等 xff0c 但是realvnc要收费 xff0c
  • Django(73)django-debug-toolbar调试工具

    介绍 Django框架的调试工具栏使用django debug toolbar库 xff0c 是一组可配置的面板 xff0c 显示有关当前请求 响应的各种调试信息 xff0c 点击时 xff0c 显示有关面板内容的更多详细信息 应用 1 安