django debug_怎么调试debug

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

介绍

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的悬浮窗
django debug_怎么调试debug
点击后就会出现调试工具栏
django debug_怎么调试debug
 

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面板突出显示执行时间超过这段时间(以毫秒为单位)的查询

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/164823.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 开机出现DISK BOOT FAILURE解决

    开机出现DISK BOOT FAILURE解决开机出现DISKBOOTFAILURE,INSERTSYSTEMDISKANDPRESSENTER情况。下面简单说下该如何解决。DISKBOOTFAILURE,INSERTSYSTEMDISKANDPRESSENTER的字面意思翻译为:磁盘启动失败,插入系统磁盘,再按回车键。一般来说就是系统磁盘引导失败,或者硬盘数据线接口松掉了。最快解决方案:开机直接按F8进入安…

    2022年7月13日
    27
  • 408计算机考研

    408计算机考研为什么要考研?考研要先了动机,没有动机很难在枯燥且艰辛漫长的考研之路坚持到最后。有的人可能说,计算机薪资高,是钱让我充满了斗志!对此云泽只能说,真是庸俗且真实。可是你知道那掉头发的速度和你赚钱的速度是成正比的吗考研要先了动机,没有动机很难在枯燥且艰辛漫长的考研之路坚持到最后。有的人可能说,计算机薪资高,是钱让我充满了斗志!大家都知道,计算机本科就很好就业,所以我们面临的就是读研深造自己和就业的诱惑之间摇摆。我们目前主要就是数理,读研和就业的问题。读研能带给你什么东

    2022年4月30日
    59
  • pycharm python安装教程_python环境安装教程

    pycharm python安装教程_python环境安装教程首先我们来安装python1、首先进入网站下载:点击打开链接(或自己输入网址https://www.python.org/downloads/),进入之后如下图,选择图中红色圈中区域进行下载。2、下载完成后如下图所示3、双击exe文件进行安装,如下图,并按照圈中区域进行设置,切记要勾选打钩的框,然后再点击Customizeinstallation进入到下一步:4、对于上图中,可以通过Browse…

    2022年8月25日
    4
  • css后代选择器_什么是后代选择器并举例说明

    css后代选择器_什么是后代选择器并举例说明后代选择器集中形式:1.父代*{}从父代中的找到所有子代。2.父代子代1{}是从父代中找到子代1或者父代子代2{}是从父代中找到子代2。3.父代子代1子代

    2022年8月3日
    4
  • BN层详解_罗盘第一层详解

    BN层详解_罗盘第一层详解批量归一化(BN:BatchNormalization:解决在训练过程中,中间层数据分布发生改变的问题,以防止梯度消失或爆炸、加快训练速度)1、为什么输入数据需要归一化(NormalizedData)?归一化后有什么好处呢?原因在于神经网络学习过程本质就是为了学习数据分布,一旦训练数据与测试数据的分布不同,那么网络的泛化能力也大大降低;另外一方面,一旦每批训练数据的分布各不相同(batch梯度下降),那么网络就要在每次迭代都去学习适应不同的分布,这样将会大大降低网络的训练速度,…

    2022年10月15日
    0
  • Eclipse安装Activiti教程

    Eclipse安装Activiti教程方式一:在线安装(坑,一般都安装不成功),可以直接看方式二1.点击eclipse上方工具栏的Help,选择InstallNewSoftware2、弹出如下窗口,然后填写插件名称和安装地址Name:ActivitiBPMN2.0designerLocation:http://activiti.org/designer/update/然后便是不停的next和finish了,组图如下点击Next点击Next点击Next点击Finish3、安

    2022年7月21日
    11

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号