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 相关文章推荐
将Emacs打造成强大的Python代码编辑工具
Nov 20 Python
使用Flask集成bootstrap的方法
Jul 24 Python
python 实现创建文件夹和创建日志文件的方法
Jul 07 Python
Python使用scipy模块实现一维卷积运算示例
Sep 05 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
Sep 06 Python
使用Fabric自动化部署Django项目的实现
Sep 27 Python
Tensorflow实现在训练好的模型上进行测试
Jan 20 Python
Python文件操作方法详解
Feb 09 Python
Python中包的用法及安装
Feb 11 Python
python安装读取grib库总结(推荐)
Jun 24 Python
基于logstash实现日志文件同步elasticsearch
Aug 06 Python
python数字图像处理数据类型及颜色空间转换
Jun 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 遍历文件实现代码
2011/05/04 PHP
php去除重复字的实现代码
2011/09/16 PHP
PHP中include/require/include_once/require_once使用心得
2016/08/28 PHP
IE8 原生JSON支持
2009/04/13 Javascript
jQuery 源代码显示控件 (Ajax加载方式).
2009/05/18 Javascript
js 多浏览器分别判断代码
2010/04/01 Javascript
THREE.JS入门教程(6)创建自己的全景图实现步骤
2013/01/25 Javascript
jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)
2013/02/26 Javascript
js读取cookie方法总结
2014/10/31 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
2015/04/20 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
2015/12/01 Javascript
js实现分割上传大文件
2016/03/09 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
浅谈jQuery中事情的动态绑定
2017/02/12 Javascript
微信小程序点击控件修改样式实例详解
2017/07/07 Javascript
js阻止默认右键的下拉菜单方法
2018/01/02 Javascript
用element的upload组件实现多图片上传和压缩的示例代码
2019/02/12 Javascript
vue强制刷新组件的方法示例
2019/02/28 Javascript
详解如何使用微信小程序云函数发送短信验证码
2019/03/13 Javascript
在Vue项目中使用snapshot测试的具体使用
2019/04/16 Javascript
[56:41]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs OG
2018/04/01 DOTA
Python 分析Nginx访问日志并保存到MySQL数据库实例
2014/03/13 Python
使用Python的urllib2模块处理url和图片的技巧两则
2016/02/18 Python
Python对象类型及其运算方法(详解)
2017/07/05 Python
Python下调用Linux的Shell命令的方法
2018/06/12 Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
2019/07/22 Python
Python 一行代码能实现丧心病狂的功能
2020/01/18 Python
python解释器pycharm安装及环境变量配置教程图文详解
2020/02/26 Python
python 按钮点击关闭窗口的实现
2020/03/04 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
一年级学生评语
2014/04/23 职场文书
交通事故委托书范本
2014/09/28 职场文书
党员批评与自我批评总结
2014/10/15 职场文书
工作检讨书500字
2014/10/19 职场文书
学校元旦晚会开场白
2015/05/29 职场文书
MySQL基础(二)
2021/04/05 MySQL