详解Django中views数据查询使用locals()函数进行优化


Posted in Python onAugust 24, 2020

优化场景

利用视图函数(views)查询数据之后可以通过上下文context、字典、列表等方式将数据传递给HTML模板,由template引擎接收数据并完成解析。但是通过context传递数据可能就存在在不同的视图函数中使用重复的查询语句,所以可以通过将重复查询语句设置全局变量,配合locals()函数进行数据查询与传递。

优化前

def index(request):
  threatname = '威胁情报展示'
  url = 'www.testtip.com'
  allthreat = Threat.objects.all()
  #推荐位的威胁情报
  rec = Threat.objects.filter(rec__id=1)[:3]
  #情报标签
  threat_tags = Tag.objects.all()
  #将上述数据封装至上下文中
  context = { 
      'threatname': threatname,
      'url': url,
      'allthreat': allthreat,
      'rec':rec,
      'threat_tags':threat_tags,
  }
  #通过render传递上下文至模板templates
  return render(request,'index.html',context)
def threatshow(request,tid):
  allthreat = Threat.objects.all()
  #推荐位的威胁情报
  rec = Threat.objects.filter(rec__id=1)[:3]
  #情报标签
  threat_tags = Tag.objects.all()
  # 热门情报数据
  hot_threat = Threat.objects.filter(hot__id=x)[:6]
  #将sitename&url&allarticle封装至上下文中
  context = { 
      'allthreat': allthreat,
      'rec':rec,
      'threat_tags':threat_tags,
      'hot_threat':hot_threat,
  }
  return render(request, 'threatshow.html',context)

上面可以看到 views 里面有 index() 和 threatshow() 两个视图函数,在这两个视图函数中有三个相同的数据查询语句:

allthreat = Threat.objects.all()
  #推荐位的威胁情报
  rec = Threat.objects.filter(rec__id=1)[:3]
  #情报标签
  threat_tags = Tag.objects.all()

优化后

设置全局变量

# 全局定义常用查询数据参数
def global_variable(request):
  allthreat = Threat.objects.all()
  #推荐位的威胁情报
  rec = Threat.objects.filter(rec__id=1)[:3]
  #情报标签
  threat_tags = Tag.objects.all()
  return locals()
views 中定义上述全局变量后,通过locals()函数优化如下:

def index(request):
  threatname = '威胁情报展示'
  url = 'www.testtip.com'
  #通过render传递上下文至模板templates
  return render(request,'index.html',locals())
def threatshow(request,tid):
  # 热门情报数据
  hot_threat = Threat.objects.filter(hot__id=x)[:6]
  return render(request, 'threatshow.html',locals())

Python 中的 locals() 函数会以字典类型返回当前位置的全部局部变量,也就是返回当前 index() 、 threatshow() 视图函数中定义的局部数据查询结果,加上全局变量当中已经完成了其他剩余数据查询,所以在满足数据查询需求的基础上完成了视图函数优化。

到此这篇关于详解Django中views数据查询使用locals()函数进行优化的文章就介绍到这了,更多相关Django locals()优化内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python 递归遍历文件夹,并打印满足条件的文件路径实例
Aug 30 Python
JS设计模式之责任链模式实例详解
Feb 03 Python
如何使用VSCode愉快的写Python于调试配置步骤
Apr 06 Python
在python中只选取列表中某一纵列的方法
Nov 28 Python
ORM Django 终端打印 SQL 语句实现解析
Aug 09 Python
Python学习笔记之字符串和字符串方法实例详解
Aug 22 Python
python web框架中实现原生分页
Sep 08 Python
解决python 找不到module的问题
Feb 12 Python
python函数enumerate,operator和Counter使用技巧实例小结
Feb 22 Python
django迁移文件migrations的实现
Mar 31 Python
python 使用raw socket进行TCP SYN扫描实例
May 05 Python
TensorFlow的自动求导原理分析
May 26 Python
python3让print输出不换行的方法
Aug 24 #Python
Django3中的自定义用户模型实例详解
Aug 23 #Python
Python用K-means聚类算法进行客户分群的实现
Aug 23 #Python
pandas参数设置的实用小技巧
Aug 23 #Python
Python如何把字典写入到CSV文件的方法示例
Aug 23 #Python
Python tkinter界面实现历史天气查询的示例代码
Aug 23 #Python
套娃式文件夹如何通过Python批量处理
Aug 23 #Python
You might like
星际玩家的三大定律
2020/03/04 星际争霸
php 获取select下拉列表框的值
2010/05/08 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
2011/07/03 PHP
php json_encode值中大括号与花括号区别
2013/09/30 PHP
一个经典的PHP文件上传类分享
2014/11/18 PHP
JavaScript方法和技巧大全
2006/12/27 Javascript
msn上的tab功能Firefox对childNodes处理的一个BUG
2008/01/21 Javascript
javascript设计模式之对象工厂函数与构造函数详解
2015/07/30 Javascript
基于javascript代码实现通过点击图片显示原图片
2015/11/29 Javascript
简单实现JS对dom操作封装
2015/12/02 Javascript
javascript回到顶部特效
2016/07/30 Javascript
ES6新特性之解构、参数、模块和记号用法示例
2017/04/01 Javascript
谈谈对vue响应式数据更新的误解
2017/08/01 Javascript
Vue计算属性的使用
2017/08/04 Javascript
ES6与CommonJS中的模块处理的区别
2018/06/13 Javascript
vue.js实现格式化时间并每秒更新显示功能示例
2018/07/07 Javascript
vue下使用nginx刷新页面404的问题解决
2019/08/02 Javascript
vue源码中的检测方法的实现
2019/09/26 Javascript
[06:09]辉夜杯主赛事开幕式
2015/12/25 DOTA
详解Python中的__new__()方法的使用
2015/04/09 Python
学习Python3 Dlib19.7进行人脸面部识别
2018/01/24 Python
Python如何实现动态数组
2019/11/02 Python
基于python实现文件加密功能
2020/01/06 Python
python标识符命名规范原理解析
2020/01/10 Python
pymysql 插入数据 转义处理方式
2020/03/02 Python
python使用QQ邮箱实现自动发送邮件
2020/06/22 Python
HTML5 canvas实现移动端上传头像拖拽裁剪效果
2016/03/14 HTML / CSS
移动端HTML5开发神器之vconsole详解
2020/12/15 HTML / CSS
The North Face北面英国官网:美国著名户外品牌
2017/12/13 全球购物
会计专业毕业生自我鉴定
2013/10/29 职场文书
网上开商店的创业计划书
2014/01/19 职场文书
人事专员岗位职责范本
2014/03/04 职场文书
疾病防治方案
2014/05/31 职场文书
2014年惩防体系建设工作总结
2014/12/01 职场文书
秦始皇兵马俑导游词
2015/02/02 职场文书
入党介绍人意见怎么写
2015/06/03 职场文书