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框架允许我们用面向对象的方式完成关系数据库中的分组和聚合查询。

最新文章

  1. Objective-C内存管理之引用计数
  2. 关于LogStash运行在AIX 64位机器上的问题与临时解决方案
  3. PowerShell脚本:随机密码生成器
  4. ecshop 改变sitemap.xml的位置
  5. STL源码学习----lower_bound和upper_bound算法[转]
  6. pre 随变化的样式
  7. 74LS164 for stm32 源码下载
  8. JFileChooser
  9. PHP导出一个txt文本文件
  10. android mediaplayer
  11. Android6.0-运行时权限处理
  12. zookeeper之分布式锁以及分布式计数器(通过curator框架实现)
  13. Java内存泄漏分析系列之六:JVM Heap Dump(堆转储文件)的生成和MAT的使用
  14. 设计模式 - 单例模式(Singleton Pattern)
  15. [RPM,YUM]RHEL Centos mount local source / RHEL CentOS挂载本地源
  16. Ubuntu16.04 导入tensorflow报错
  17. CentOS7+Apache+MySQL+PHP环境
  18. input = time 微信端(移动端)
  19. TZOJ 3481 Highway Construction(树的直径+最短路)
  20. LPAD在Oracle中和 mssql以及在MySQL中的不同用法 以及调用存储过程方法

热门文章

  1. Map映射如何使用迭代器?
  2. axios 源码分析(上) 使用方法
  3. javascript中的发布订阅模式与观察者模式
  4. kali渗透综合靶机(十五)--Breach-1.0靶机
  5. 2019-11-29-WPF-禁用实时触摸
  6. C# 改变控制台背景颜色
  7. AspNetCore.Identity详解1——入门使用
  8. 高性能TcpServer(C#) - 3.命令通道(处理:掉包,粘包,垃圾包)
  9. Java面向对象——相关基本定义
  10. wsl下安装并运行Kafka