Django中使用locals()函数的技巧


Posted in Python onJuly 16, 2015

对 current_datetime 的一次赋值操作:

def current_datetime(request):
  now = datetime.datetime.now()
  return render_to_response('current_datetime.html', {'current_date': now})

很多时候,就像在这个范例中那样,你发现自己一直在计算某个变量,保存结果到变量中(比如前面代码中的 now ),然后将这些变量发送给模板。 尤其喜欢偷懒的程序员应该注意到了,不断地为临时变量和临时模板命名有那么一点点多余。 不仅多余,而且需要额外的输入。

如果你是个喜欢偷懒的程序员并想让代码看起来更加简明,可以利用 Python 的内建函数 locals() 。它返回的字典对所有局部变量的名称与值进行映射。 因此,前面的视图可以重写成下面这个样子:

def current_datetime(request):
  current_date = datetime.datetime.now()
  return render_to_response('current_datetime.html', locals())

在此,我们没有像之前那样手工指定 context 字典,而是传入了 locals() 的值,它囊括了函数执行到该时间点时所定义的一切变量。 因此,我们将 now 变量重命名为 current_date ,因为那才是模板所预期的变量名称。 在本例中, locals() 并没有带来多 大 的改进,但是如果有多个模板变量要界定而你又想偷懒,这种技术可以减少一些键盘输入。

使用 locals() 时要注意是它将包括 所有 的局部变量,它们可能比你想让模板访问的要多。 在前例中, locals() 还包含了 request 。对此如何取舍取决你的应用程序。

Python 相关文章推荐
python调用短信猫控件实现发短信功能实例
Jul 04 Python
python监控文件或目录变化
Jun 07 Python
python去除字符串中的换行符
Oct 11 Python
使用python3+xlrd解析Excel的实例
May 04 Python
django之跨表查询及添加记录的示例代码
Oct 16 Python
python把ipynb文件转换成pdf文件过程详解
Jul 09 Python
opencv实现简单人脸识别
Feb 19 Python
python配置文件写入过程详解
Oct 19 Python
PyTorch中Tensor的数据统计示例
Feb 17 Python
python编写softmax函数、交叉熵函数实例
Jun 11 Python
Django restful framework生成API文档过程详解
Nov 12 Python
Python中OpenCV实现简单车牌字符切割
Jun 11 Python
Django框架中render_to_response()函数的使用方法
Jul 16 #Python
在Python的Django框架中加载模版的方法
Jul 16 #Python
Django框架下在视图中使用模版的方法
Jul 16 #Python
详解Django中的过滤器
Jul 16 #Python
在Python的Django框架中为代码添加注释的方法
Jul 16 #Python
详解Django中的ifequal和ifnotequal标签使用
Jul 16 #Python
Python实现数通设备端口使用情况监控实例
Jul 15 #Python
You might like
基于PHP的cURL快速入门教程 (小偷采集程序)
2011/06/02 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
2013/12/03 PHP
简单实用的网站PHP缓存类实例
2014/07/18 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
JavaScript Base64编码和解码,实现URL参数传递。
2006/09/18 Javascript
js substring从右边获取指定长度字符串(示例代码)
2013/12/23 Javascript
jquery删除指定子元素代码实例
2015/01/13 Javascript
js实现浏览本地文件并显示扩展名的方法
2015/08/17 Javascript
jQuery+Ajax实现无刷新操作
2016/01/04 Javascript
jQuery实现的多滑动门,多选项卡效果代码
2016/03/28 Javascript
20分钟打造属于你的Bootstrap站点
2016/07/27 Javascript
理解AngularJs篇:30分钟快速掌握AngularJs
2016/12/23 Javascript
在 Angular 中实现搜索关键字高亮示例
2017/03/21 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
jQuery+ajax实现修改密码验证功能实例详解
2017/07/06 jQuery
js+html5实现半透明遮罩层弹框效果
2020/08/24 Javascript
vuex与组件联合使用的方法
2018/05/10 Javascript
使用JavaScript生成罗马字符的实例代码
2018/06/08 Javascript
vue+element-ui实现表格编辑的三种实现方式
2018/10/31 Javascript
微信小程序自定义带价格显示日历效果
2018/12/29 Javascript
如何在vue中使用kindeditor富文本编辑器
2020/12/19 Vue.js
Python多线程实现同步的四种方式
2017/05/02 Python
Tensorflow使用tfrecord输入数据格式
2018/06/19 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
2019/07/15 Python
PyQt Qt Designer工具的布局管理详解
2019/08/07 Python
Python修改列表值问题解决方案
2020/03/06 Python
通过Python实现Payload分离免杀过程详解
2020/07/13 Python
Ivory Isle Designs美国/加拿大:婚礼和活动文具公司
2018/08/21 全球购物
光声世纪笔试题目
2012/08/25 面试题
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2013/05/03 面试题
扩大国家免疫规划实施方案
2014/03/21 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
傅雷家书读书笔记
2015/06/29 职场文书
诉讼和解协议书
2016/03/23 职场文书
创业计划书之儿童理发店
2019/09/27 职场文书