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 20 Python
python连接mysql调用存储过程示例
Mar 05 Python
Python实现字符串匹配算法代码示例
Dec 05 Python
python如何读写json数据
Mar 21 Python
Python continue继续循环用法总结
Jun 10 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
Jan 19 Python
python实现几种归一化方法(Normalization Method)
Jul 31 Python
Pytorch自己加载单通道图片用作数据集训练的实例
Jan 18 Python
Python如何使用OS模块调用cmd
Feb 27 Python
浅谈Python中的继承
Jun 19 Python
python中字符串的编码与解码详析
Dec 03 Python
Python制作表白爱心合集
Jan 22 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的substr_replace将指定两位置之间的字符替换为*号
2011/05/04 PHP
php中jQuery插件autocomplate的简单使用笔记
2012/06/14 PHP
PHP+memcache实现消息队列案例分享
2014/05/21 PHP
php5.3以后的版本连接sqlserver2000的方法
2014/07/28 PHP
值得分享的php+ajax实时聊天室
2016/07/20 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
2019/10/09 PHP
jquery中交替点击事件toggle方法的使用示例
2013/12/08 Javascript
jquery实现点击展开列表同时隐藏其他列表
2015/08/10 Javascript
jQuery实用技巧必备(下)
2015/11/03 Javascript
Jquery 1.9.1源码分析系列(十二)之筛选操作
2015/12/02 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
2016/05/05 Javascript
详解VueJs异步动态加载块
2017/03/09 Javascript
vue中的非父子间的通讯问题简单的实例代码
2017/07/19 Javascript
微信小程序switch开关选择器使用详解
2018/01/31 Javascript
javaScript动态添加Li元素的实例
2018/02/24 Javascript
vue动态配置模板 'component is'代码
2019/07/04 Javascript
js实现倒计时秒杀效果
2020/03/25 Javascript
python实现发送和获取手机短信验证码
2016/01/15 Python
python实现上传下载文件功能
2020/11/19 Python
python+matplotlib演示电偶极子实例代码
2018/01/12 Python
Python实现的将文件每一列写入列表功能示例【测试可用】
2018/03/19 Python
linux环境下安装python虚拟环境及注意事项
2020/01/07 Python
python编程进阶之类和对象用法实例分析
2020/02/21 Python
解决运行出现'dict' object has no attribute 'has_key'问题
2020/07/15 Python
Python之字符串的遍历的4种方式
2020/12/08 Python
英国领先的汽车轮胎和快速健康中心:Kwik Fit
2017/10/29 全球购物
新英格兰最大的特色礼品连锁店:The Paper Store
2018/07/23 全球购物
一年级家长会邀请函
2014/01/25 职场文书
领导班子对照检查剖析材料
2014/10/13 职场文书
酒店总经理岗位职责
2015/04/01 职场文书
培训后的感想
2015/08/07 职场文书
2015年街道办事处团委工作总结
2015/10/14 职场文书
2016教师国培研修感言
2015/12/08 职场文书
MySQL系列之五 视图、存储函数、存储过程、触发器
2021/07/02 MySQL
SQL Server查询某个字段在哪些表中存在
2022/03/03 SQL Server
使用python绘制分组对比柱状图
2022/04/21 Python