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程序的方法
Apr 21 Python
深入理解 Python 中的多线程 新手必看
Nov 20 Python
python使用fcntl模块实现程序加锁功能示例
Jun 23 Python
Python实现读取json文件到excel表
Nov 18 Python
python使用pil库实现图片合成实例代码
Jan 20 Python
python图像处理模块Pillow的学习详解
Oct 09 Python
pytorch实现seq2seq时对loss进行mask的方式
Feb 18 Python
python函数中将变量名转换成字符串实例
May 11 Python
Python使用struct处理二进制(pack和unpack用法)
Nov 12 Python
pytorch查看网络参数显存占用量等操作
May 12 Python
Python Matplotlib库实现画局部图
Nov 17 Python
Python借助with语句实现代码段只执行有限次
Mar 23 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自动适应范围的分页代码
2008/08/05 PHP
php set_time_limit(0) 设置程序执行时间的函数
2010/05/26 PHP
PHP SPL使用方法和他的威力
2013/11/12 PHP
php返回当前日期或者指定日期是周几
2015/05/21 PHP
PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例
2018/08/04 PHP
一直复略了的一个问题,关于表单重复提交
2007/02/15 Javascript
JS下高效拼装字符串的几种方法比较与测试代码
2010/04/15 Javascript
基于jQuery的输入框无值自动显示指定数据的实现代码
2011/01/24 Javascript
20款非常优秀的 jQuery 工具提示插件 推荐
2012/07/15 Javascript
Extjs实现进度条的两种便捷方式
2013/09/26 Javascript
js字符串转成JSON
2013/11/07 Javascript
js简单的点击返回顶部效果实现方法
2015/04/10 Javascript
JQuery.validate在ie8下不支持的快速解决方法
2016/05/18 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
2016/12/27 Javascript
ES6数组的扩展详解
2017/04/25 Javascript
运用js实现图层拖拽的功能
2019/05/24 Javascript
js实现表单项的全选、反选及删除操作示例
2020/06/05 Javascript
详解vue-router的导航钩子(导航守卫)
2020/11/02 Javascript
python 检查文件mime类型的方法
2018/12/08 Python
对Django外键关系的描述
2019/07/26 Python
Cython编译python为so 代码加密示例
2019/12/23 Python
Pandas时间序列:重采样及频率转换方式
2019/12/26 Python
pytorch 彩色图像转灰度图像实例
2020/01/13 Python
音频处理 windows10下python三方库librosa安装教程
2020/06/20 Python
详解vscode实现远程linux服务器上Python开发
2020/11/10 Python
使用HTML5 Canvas API控制字体的显示与渲染的方法
2016/03/24 HTML / CSS
世界上最大的曲棍球商店:Pro Hockey Life
2017/10/30 全球购物
SHEIN美国:购买时髦的女性服装
2020/12/02 全球购物
数控技校生自我鉴定
2014/03/02 职场文书
单位工程竣工验收方案
2014/03/16 职场文书
2015年学校安全管理工作总结
2015/05/11 职场文书
敬老院活动感想
2015/08/07 职场文书
2016中秋节广告语
2016/01/28 职场文书
pandas取dataframe特定行列的实现方法
2021/05/24 Python
Redis 哨兵集群的实现
2021/06/18 Redis
SQL Server携程核心系统无感迁移到MySQL实战
2022/06/01 SQL Server