• Django-Debug-Toolbar插件


    django配置插件:

    ---配置Django-Debug-Toolbar

    介绍:

        Django-Debug-Toolbar是项目开发阶段辅助调试和优化的神器,只要配置了它,就可以很方便的查看到如下表所示的项目运行信息,这些信息对调试项目和优化Web应用性能都是至关重要的
    
    项目	说明
    Versions	Django的版本
    Time	显示视图耗费的时间
    Settings	配置文件中设置的值
    Headers	HTTP请求头和响应头的信息
    Request	和请求相关的各种变量及其信息
    StaticFiles	静态文件加载情况
    Templates	模板的相关信息
    Cache	缓存的使用情况
    Signals	Django内置的信号信息
    Logging	被记录的日志信息
    SQL	向数据库发送的SQL语句及其执行时间
    

    安装及配置:

    1.安装Django-Debug-Toolbar:
    pip install django-debug-toolbar
    
    2.配置 - 修改settings.py。
    
    INSTALLED_APPS = [
        'debug_toolbar',
    ]
    
    MIDDLEWARE = [
        'debug_toolbar.middleware.DebugToolbarMiddleware',
    ]
    
    DEBUG_TOOLBAR_CONFIG = {
        # 引入jQuery库
        'JQUERY_URL': 'https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js',
        # 工具栏是否折叠
        'SHOW_COLLAPSED': True,
        # 是否显示工具栏
        'SHOW_TOOLBAR_CALLBACK': lambda x: True,
    }
    
    
    3.配置 - 修改urls.py。
    
    if settings.DEBUG:
    
        import debug_toolbar
    
        urlpatterns.insert(0, path('__debug__/', include(debug_toolbar.urls)))
    
    
        
     4. 配置好Django-Debug-Toolbar之后,页面右侧会看到一个调试工具栏,上面包括了如前所述的各种调试信息,包括执行时间、项目设置、请求头、SQL、静态资源、模板、缓存、信号等
    

    优化ORM:

     1.	按照下面的方式优化代码。
    
    queryset = Teacher.objects.all().select_related('subject')在配置了日志或Django-Debug-Toolbar之后,执行Teacher.objects.all()之后我们可以注意到,在控制台看到的或者通过Django-Debug-Toolbar输出的SQL是下面这样的:
    '''
    SELECT `tb_teacher`.`no`, `tb_teacher`.`name`, `tb_teacher`.`detail`, `tb_teacher`.`photo`, `tb_teacher`.`good_count`, `tb_teacher`
    '''
    
    2.按照下面的方式优化代码。
    
    #用QuerySet的only()方法来指定需要查询的属性,也可以用QuerySet的defer()方法来指定暂时不需要查询的属性,这样生成的SQL会通过投影操作来指定需要查询的列,从而改善查询性能,代码如下所示:
    
    queryset = Teacher.objects.all().only('name', 'good_count', 'bad_count')
    
    #    使用QuerySet的用select_related()方法来加载关联对象;而对于多对多关联(如电商网站中的订单和商品),我们可以使用prefetch_related()方法来加载关联对象
    
    queryset = Teacher.objects.all().select_related('subject')
    
    
    queryset = Teacher.objects.values('subject').annotate(
            good=Avg('good_count'), bad=Avg('bad_count'))
    
    #统计出每个学科的老师好评和差评的平均数
    
    3.Django的ORM框架允许我们用面向对象的方式完成关系数据库中的分组和聚合查询。
    
  • 相关阅读:
    java ArrayList存储基本类型
    java ArrayList的几种方法使用
    java ArrayList的基本使用
    java 猜数字
    java Random随机生成一个数
    java Scanner输入数字、字符串
    java 构造方法
    java this的应用
    java pravite关键字的使用
    云计算服务
  • 原文地址:https://www.cnblogs.com/shaozheng/p/12025411.html
Copyright © 2020-2023  润新知