Python之Django之views中视图代码重复查询的优化
2024-08-26 16:40:04
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 【单页面实现与代码优化】
最新文章
- nil、Nil、NULL、NSNull的区别
- Dynamic CRM 2013学习笔记(四十三)流程6 - 自定义流程活动
- Django 新人开发的十个注意点
- spring+hibernate+Struts2 整合(全注解及注意事项)
- 单击改变input的边框颜色
- 转载总结一些关于Google chart api的知识
- 关于MySQL的分区(partion)
- ng事件中为变量的参数
- html一些东东
- NET应用——使用RSA构建相对安全的数据交互
- 在iOS App 中添加启动画面
- mariadb集群与nginx负载均衡配置--centos7版本
- vue初尝试--项目结构
- sqlilabs 1-4
- 享元模式 FlyWeight 结构型 设计模式(十五)
- Salesforce的对象关系
- ViewPager + TabLayout + Fragment + MediaPlayer的使用
- C#工作总结(一):Fleck的WebSocket使用
- java中常用jar包
- 服务请求比较慢SYN flooding