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中Flask框架简单入门实例
Mar 21 Python
对于Python异常处理慎用“except:pass”建议
Apr 02 Python
python实现下载文件的三种方法
Feb 09 Python
Python3 replace()函数使用方法
Mar 19 Python
Python爬虫工程师面试问题总结
Mar 22 Python
python读取TXT每行,并存到LIST中的方法
Oct 26 Python
python实现银联支付和支付宝支付接入
May 07 Python
python输出带颜色字体实例方法
Sep 01 Python
Python子进程subpocess原理及用法解析
Jul 16 Python
python爬取网易云音乐热歌榜实例代码
Aug 07 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
Jan 06 Python
pycharm2021激活码使用教程(永久激活亲测可用)
Mar 30 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自动生成月历代码
2006/10/09 PHP
php开发工具之vs2005图解
2008/01/12 PHP
PHP 5.3.1 安装包 VC9 VC6不同版本的区别是什么
2010/07/04 PHP
PHP中将数组转成XML格式的实现代码
2011/08/08 PHP
基于php的微信公众平台开发入门实例
2015/04/15 PHP
java script编程起步(第三课)
2007/01/10 Javascript
获取URL地址中的文件名和参数的javascript代码
2009/09/02 Javascript
JavaScript游戏之优化篇
2010/11/08 Javascript
js hover 定时器(实例代码)
2013/11/12 Javascript
js实现身份证号码验证的简单实例
2014/02/19 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
2016/07/10 Javascript
AngularJS使用ng-options指令实现下拉框
2016/08/23 Javascript
JS实现图片居中悬浮效果
2017/12/25 Javascript
webpack external模块的具体使用
2018/03/10 Javascript
Bootstrap 中data-[*] 属性的整理
2018/03/13 Javascript
详解Vue.js中.native修饰符
2018/04/24 Javascript
js动态设置select下拉菜单的默认选中项实例
2018/08/21 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
2018/10/10 Javascript
JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天的示例代码
2018/12/05 Javascript
在微信小程序中保存网络图片
2019/02/12 Javascript
浅谈Webpack多页应用HMR卡住问题
2019/04/24 Javascript
Vue.js实现tab切换效果
2019/07/24 Javascript
小程序登录之支付宝授权的实现示例
2019/12/13 Javascript
Node使用koa2实现一个简单JWT鉴权的方法
2021/01/26 Javascript
[03:38]2014DOTA2西雅图国际邀请赛 VG战队巡礼
2014/07/07 DOTA
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
2018/09/04 Python
基于python的Paxos算法实现
2019/07/03 Python
Django上线部署之IIS的配置方法
2019/08/22 Python
python-numpy-指数分布实例详解
2019/12/07 Python
Python 如何定义匿名或内联函数
2020/08/01 Python
中级会计职业生涯规划范文
2014/01/16 职场文书
共产党员批评与自我批评
2014/10/15 职场文书
运动会表扬稿范文
2015/05/05 职场文书
色戒观后感
2015/06/12 职场文书
关于Vue Router的10条高级技巧总结
2021/05/06 Vue.js