Django框架中views视图中如果多个函数都有同样的查询语句,例如:

allcategory = Category.objects.all()
remen = Article.objects.filter(tui__id=2)[:6]
tags = Tag.objects.all()

如果不优化,会导致每执行一次函数,都会重新查询一遍数据库,现进行简要优化:步骤如下

第一步,将以上三行语句拷贝出来,重构成一个独立的函数如下:

def global_variable(request):
allcategory = Category.objects.all()
remen = Article.objects.filter(tui__id=2)[:6]
tags = Tag.objects.all()
return locals()

第二步:在项目主文件settings.py文件中更新模板配置

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')]
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'blog.views.global_variable',
],
},
},
]

第三步:将views.py文件所有带上述三个查询的函数中此三行删除。

over,大功告成!

如此只需要查询一次数据库,便可以给众多的函数使用。

转自:https://www.django.cn/course/show-51.html 【单页面实现与代码优化】

最新文章

  1. nil、Nil、NULL、NSNull的区别
  2. Dynamic CRM 2013学习笔记(四十三)流程6 - 自定义流程活动
  3. Django 新人开发的十个注意点
  4. spring+hibernate+Struts2 整合(全注解及注意事项)
  5. 单击改变input的边框颜色
  6. 转载总结一些关于Google chart api的知识
  7. 关于MySQL的分区(partion)
  8. ng事件中为变量的参数
  9. html一些东东
  10. NET应用——使用RSA构建相对安全的数据交互
  11. 在iOS App 中添加启动画面
  12. mariadb集群与nginx负载均衡配置--centos7版本
  13. vue初尝试--项目结构
  14. sqlilabs 1-4
  15. 享元模式 FlyWeight 结构型 设计模式(十五)
  16. Salesforce的对象关系
  17. ViewPager + TabLayout + Fragment + MediaPlayer的使用
  18. C#工作总结(一):Fleck的WebSocket使用
  19. java中常用jar包
  20. 服务请求比较慢SYN flooding

热门文章

  1. CF: Long Number
  2. generator 和yeild
  3. CentOS7使用阿里yum源安装Docker
  4. java基础(10)---stream流
  5. 用chrome浏览器进行前端debug和停止debug
  6. python统计代码总行数(代码行、空行、注释行)
  7. ASCII、Unicode、UTF-8字符集编码
  8. 十二.Protobuf3编码
  9. 拉格朗日插值matlab实现
  10. Newtonsoft.Json 自定义序列化器---时间