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 相关文章推荐
Python3基础之输入和输出实例分析
Aug 18 Python
Python中的条件判断语句与循环语句用法小结
Mar 21 Python
python学习之面向对象【入门初级篇】
Jan 21 Python
基于DataFrame改变列类型的方法
Jul 25 Python
Python实现微信消息防撤回功能的实例代码
Apr 29 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
May 07 Python
应用OpenCV和Python进行SIFT算法的实现详解
Aug 21 Python
python实现的接收邮件功能示例【基于网易POP3服务器】
Sep 11 Python
python如何通过twisted搭建socket服务
Feb 03 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
Mar 03 Python
浅谈Python中的模块
Jun 10 Python
pandas统计重复值次数的方法实现
Feb 20 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
屏蔽浏览器缓存另类方法
2006/10/09 PHP
PHP中根据IP地址判断城市实现城市切换或跳转代码
2012/09/04 PHP
执行、获取远程代码返回:file_get_contents 超时处理的问题详解
2013/06/25 PHP
centos7上编译安装php7以php-fpm方式连接apache
2018/11/08 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
ExtJs之带图片的下拉列表框插件
2010/03/04 Javascript
ExtJs中简单的登录界面制作方法
2010/08/19 Javascript
javascript正则表达式之search()用法实例
2015/01/19 Javascript
原生Js实现简易烟花爆炸效果的方法
2015/03/20 Javascript
js实现模拟计算器退格键删除文字效果的方法
2015/05/07 Javascript
window.onload绑定多个事件的两种解决方案
2016/05/15 Javascript
jQuery使用serialize()表单序列化时出现中文乱码问题的解决办法
2016/07/27 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
js中开关变量使用实例
2017/02/24 Javascript
web页面和微信小程序页面实现瀑布流效果
2018/09/26 Javascript
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
javascript中call,apply,bind的区别详解
2020/12/11 Javascript
jquery实现穿梭框功能
2021/01/19 jQuery
vue 实现click同时传入事件对象和自定义参数
2021/01/29 Vue.js
Python竟能画这么漂亮的花,帅呆了(代码分享)
2017/11/15 Python
Python查找第n个子串的技巧分享
2018/06/27 Python
Django框架HttpResponse对象用法实例分析
2019/11/01 Python
用Python绘制漫步图实例讲解
2020/02/26 Python
ONLY德国官方在线商店:购买时尚女装
2017/09/21 全球购物
prAna官网:瑜伽、旅行和冒险服装
2019/03/10 全球购物
意大利网上购书网站:Libraccio.it
2021/02/03 全球购物
你所知道的集合类都有哪些?主要方法?
2012/12/31 面试题
电子信息工程专业推荐信
2014/02/14 职场文书
安全生产宣传标语
2014/06/06 职场文书
社会学专业求职信
2014/07/17 职场文书
应聘护士求职信
2014/07/21 职场文书
结对共建协议书
2014/08/20 职场文书
2015年国庆节活动总结
2015/03/23 职场文书
小学生节水倡议书
2015/04/29 职场文书
Memcached介绍及php-memcache扩展安装
2021/04/01 PHP
Python安装及建立虚拟环境的完整步骤
2022/06/25 Servers