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 Tkinter GUI编程入门介绍
Mar 10 Python
在Python的列表中利用remove()方法删除元素的教程
May 21 Python
浅谈python 四种数值类型(int,long,float,complex)
Jun 08 Python
python 删除列表里所有空格项的方法总结
Apr 18 Python
Python 变量类型详解
Oct 10 Python
python实现发送form-data数据的方法详解
Sep 27 Python
python使用html2text库实现从HTML转markdown的方法详解
Feb 21 Python
PyQt5 控件字体样式等设置的实现
May 13 Python
pytorch简介
Nov 11 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
Dec 03 Python
python 进阶学习之python装饰器小结
Sep 04 Python
python 实现图片特效处理
Apr 03 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&&mysql)二
2006/10/09 PHP
ThinkPHP登录功能的实现方法
2014/08/20 PHP
PHP获取网站中各文章的第一张图片的代码示例
2016/05/20 PHP
laravel config文件配置全局变量的例子
2019/10/13 PHP
js中的hasOwnProperty和isPrototypeOf方法使用实例
2014/06/06 Javascript
js实现的简洁网页滑动tab菜单效果代码
2015/08/24 Javascript
JavaScript+html5 canvas制作的圆中圆效果实例
2016/01/27 Javascript
webpack学习笔记之代码分割和按需加载的实例详解
2017/07/20 Javascript
微信小程序实现倒计时补零功能
2018/07/09 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
2019/09/05 Javascript
JQuery发送ajax请求时中文乱码问题解决
2019/11/14 jQuery
JS实现音乐钢琴特效
2020/01/06 Javascript
jQuery表单校验插件validator使用方法详解
2020/02/18 jQuery
JavaScript Blob对象原理及用法详解
2020/10/14 Javascript
vue项目配置同一局域网可使用ip访问的操作
2020/10/23 Javascript
[59:48]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第一场 1月26日
2021/03/11 DOTA
Python 错误和异常小结
2013/10/09 Python
python使用PyGame播放Midi和Mp3文件的方法
2015/04/24 Python
浅谈Python的文件类型
2016/05/30 Python
Python基于百度云文字识别API
2018/12/13 Python
python实现微信小程序用户登录、模板推送
2019/08/28 Python
Python循环实现n的全排列功能
2019/09/16 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
2020/02/19 Python
Python三维绘图之Matplotlib库的使用方法
2020/09/20 Python
python 使用三引号时容易犯的小错误
2020/10/21 Python
苏格兰领先的多渠道鞋店:Begg Shoes
2019/10/22 全球购物
公务员职业生涯规划书范文  
2014/01/19 职场文书
一年级评语大全
2014/04/23 职场文书
办公室主任竞聘演讲稿
2014/05/15 职场文书
文明生主要事迹
2014/05/25 职场文书
临时工聘用合同协议书
2014/10/29 职场文书
农业项目投资意向书
2015/05/09 职场文书
小时代观后感
2015/06/10 职场文书
2016年基层党组织公开承诺书
2016/03/25 职场文书
合作意向书怎么写
2019/06/24 职场文书
MySQL数据库实验实现简单数据库应用系统设计
2022/06/21 MySQL