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爬虫模拟登录带验证码网站
Jan 22 Python
详解Python的Django框架中manage命令的使用与扩展
Apr 11 Python
浅谈python中的面向对象和类的基本语法
Jun 13 Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
May 07 Python
Python3匿名函数lambda介绍与使用示例
May 18 Python
利用pyecharts读取csv并进行数据统计可视化的实现
Apr 17 Python
Python基于模块Paramiko实现SSHv2协议
Apr 28 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
Jun 03 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
Aug 17 Python
如何使用python写截屏小工具
Sep 29 Python
Biblibili视频投稿接口分析并以Python实现自动投稿功能
Feb 05 Python
关于Python使用turtle库画任意图的问题
Apr 01 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
在任意字符集下正常显示网页的方法一
2007/04/01 PHP
PHP 中文处理技巧
2010/04/25 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
2014/04/29 PHP
PHP函数extension_loaded()用法实例
2015/01/19 PHP
通过PHP自带的服务器来查看正则匹配结果的方法
2015/12/24 PHP
解决jQuery插件tipswindown与hintbox冲突
2010/11/05 Javascript
40款非常有用的 jQuery 插件推荐(系列一)
2011/12/21 Javascript
jquery选择器之内容过滤选择器详解
2014/01/27 Javascript
jquery新的绑定事件机制on方法的使用方法
2014/04/15 Javascript
理解Javascript的动态语言特性
2015/06/17 Javascript
用jQuery获取table中行id和td值的实现代码
2016/05/19 Javascript
js实现添加可信站点、修改activex安全设置,禁用弹出窗口阻止程序
2016/08/17 Javascript
ionic实现带字的toggle滑动组件
2016/08/27 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
vue中设置height:100%无效的问题及解决方法
2018/07/27 Javascript
vue+iview/elementUi实现城市多选
2019/03/28 Javascript
python实现的一个火车票转让信息采集器
2014/07/09 Python
Python+OpenCV目标跟踪实现基本的运动检测
2018/07/10 Python
python 在指定范围内随机生成不重复的n个数实例
2019/01/28 Python
python自动化之Ansible的安装教程
2019/06/13 Python
python视频按帧截取图片工具
2019/07/23 Python
Python产生一个数值范围内的不重复的随机数的实现方法
2019/08/21 Python
Python序列化与反序列化pickle用法实例
2019/11/11 Python
在TensorFlow中屏蔽warning的方式
2020/02/04 Python
Python urllib2运行过程原理解析
2020/06/04 Python
Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)
2020/07/14 Python
学习Python爬虫的几点建议
2020/08/05 Python
使用Python下载抖音各大V视频的思路详解
2021/02/06 Python
CSS3网格的三个新特性详解
2014/04/04 HTML / CSS
美国儿童珠宝在线零售商:Loveivy
2019/05/22 全球购物
俄罗斯花园种植材料批发和零售网上商店:Беккер
2019/07/22 全球购物
求职教师自荐书
2014/06/19 职场文书
男方婚前保证书
2015/02/28 职场文书
结婚通知短信大全
2015/04/17 职场文书
Go语言中的UTF-8实现
2021/04/26 Golang
PostGIS的安装与入门使用指南
2022/01/18 PostgreSQL