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 相关文章推荐
wxPython窗口中文乱码解决方法
Oct 11 Python
python将MongoDB里的ObjectId转换为时间戳的方法
Mar 13 Python
Python中正则表达式的详细教程
Apr 30 Python
Python连接SQLServer2000的方法详解
Apr 19 Python
python timestamp和datetime之间转换详解
Dec 11 Python
python 将数据保存为excel的xls格式(实例讲解)
May 03 Python
Django实现登录随机验证码的示例代码
Jun 20 Python
用python实现k近邻算法的示例代码
Sep 06 Python
python匿名函数lambda原理及实例解析
Feb 07 Python
Python递归实现打印多重列表代码
Feb 27 Python
Linux安装Python3如何和系统自带的Python2并存
Jul 23 Python
K近邻法(KNN)相关知识总结以及如何用python实现
Jan 28 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连接Oracle for NT 远程数据库
2006/10/09 PHP
php页码形式分页函数支持静态化地址及ajax分页
2014/03/28 PHP
PHP框架Swoole定时器Timer特性分析
2014/08/19 PHP
Zend Framework教程之MVC框架的Controller用法分析
2016/03/07 PHP
Laravel 连接(Join)示例
2019/10/16 PHP
Extjs TriggerField在弹出窗口显示不出问题的解决方法
2010/01/08 Javascript
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
Knockout数组(observable)使用详解示例
2013/11/15 Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
jquery实现横向图片轮播特效代码分享
2015/11/19 Javascript
js阻止浏览器默认行为的简单实例
2016/05/15 Javascript
微信小程序实现类似微信点击语音播放效果
2020/03/30 Javascript
[01:06]DOTA2亚洲邀请赛专属珍藏-荧煌之礼
2017/03/24 DOTA
Python学习之asyncore模块用法实例教程
2014/09/29 Python
python实现ipsec开权限实例
2014/11/11 Python
Python的numpy库中将矩阵转换为列表等函数的方法
2018/04/04 Python
Python+numpy实现矩阵的行列扩展方式
2019/11/29 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
2020/10/02 Python
python实现发送邮件
2021/03/02 Python
CSS3 边框效果
2019/11/04 HTML / CSS
AmazeUI的JS表单验证框架实战示例分享
2020/08/21 HTML / CSS
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
劳资员岗位职责
2013/11/11 职场文书
上班早退检讨书
2014/01/09 职场文书
理工大学毕业生自荐信范文
2014/02/22 职场文书
中西医专业毕业生职业规划书
2014/02/24 职场文书
加油口号大全
2014/06/13 职场文书
弘扬焦裕禄精神走群众路线思想汇报
2014/09/12 职场文书
老人节标语大全
2014/10/08 职场文书
2014年学校卫生工作总结
2014/11/20 职场文书
销售工作决心书
2015/02/04 职场文书
求职自我推荐信
2015/03/24 职场文书
行政司机岗位职责
2015/04/10 职场文书
2015年幼儿教育工作总结
2015/07/24 职场文书
发工资啦!教你用Python实现邮箱自动群发工资条
2021/05/10 Python