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实现sublime3的less编译插件示例
Apr 27 Python
Python3.4编程实现简单抓取爬虫功能示例
Sep 14 Python
Python实现生成随机日期字符串的方法示例
Dec 25 Python
python计算两个数的百分比方法
Jun 29 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
Dec 29 Python
Python发展简史 Python来历
May 14 Python
python 实现交换两个列表元素的位置示例
Jun 26 Python
pytorch numpy list类型之间的相互转换实例
Aug 18 Python
python英语单词测试小程序代码实例
Sep 09 Python
Python hmac模块使用实例解析
Dec 24 Python
python 图像的离散傅立叶变换实例
Jan 02 Python
浅谈Python中的模块
Jun 10 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连接Access数据库的方法小结
2013/06/20 PHP
PHP构造二叉树算法示例
2017/06/21 PHP
通过修改referer下载文件的方法
2008/05/11 Javascript
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
2011/08/28 Javascript
js获取单选框或复选框值及操作
2012/12/18 Javascript
ANGULARJS中用NG-BIND指令实现单向绑定的例子
2014/12/08 Javascript
使用NodeJs 开发微信公众号(三)微信事件交互实例
2016/03/02 NodeJs
使用jquery如何获取时间
2016/10/13 Javascript
Vue.use源码分析
2017/04/22 Javascript
完美实现js拖拽效果 return false用法详解
2017/07/28 Javascript
jQuery上传插件webupload使用方法
2017/08/01 jQuery
jQuery实现checkbox即点即改批量删除及中间遇到的坑
2017/11/11 jQuery
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
JavaScript使用闭包模仿块级作用域操作示例
2019/01/21 Javascript
[00:12]2018DOTA2亚洲邀请赛SOLO赛 MidOne是否中单第一人?
2018/04/05 DOTA
Python中的异常处理学习笔记
2015/01/28 Python
python用reduce和map把字符串转为数字的方法
2016/12/19 Python
tesserocr与pytesseract模块的使用方法解析
2019/08/30 Python
Python 中使用 PyMySQL模块操作数据库的方法
2019/11/10 Python
python 计算积分图和haar特征的实例代码
2019/11/20 Python
Python面向对象程序设计之私有变量,私有方法原理与用法分析
2020/03/23 Python
Keras Convolution1D与Convolution2D区别说明
2020/05/22 Python
基于python和flask实现http接口过程解析
2020/06/15 Python
Keras设置以及获取权重的实现
2020/06/19 Python
python logging 重复写日志问题解决办法详解
2020/08/04 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
2020/12/16 Python
python中的unittest框架实例详解
2021/02/05 Python
Fanatics法国官网:美国体育电商
2019/08/27 全球购物
怎样写留学自荐信
2013/11/11 职场文书
学校司机岗位职责
2013/11/14 职场文书
直接有效的自我评价
2014/01/11 职场文书
先进事迹演讲稿
2014/09/01 职场文书
行政执法队伍作风整顿个人剖析材料
2014/10/11 职场文书
学生病假条怎么写
2015/08/17 职场文书
公务员爱岗敬业心得体会
2016/01/25 职场文书
《飘》英文读后感五篇
2019/10/11 职场文书