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求导数的方法
May 09 Python
用python写的一个wordpress的采集程序
Feb 27 Python
深入解析Python中的descriptor描述器的作用及用法
Jun 27 Python
浅析Python3爬虫登录模拟
Feb 07 Python
Python实现的求解最大公约数算法示例
May 03 Python
python识别图像并提取文字的实现方法
Jun 28 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
Sep 07 Python
Python实现链表反转的方法分析【迭代法与递归法】
Feb 22 Python
Python通过socketserver处理多个链接
Mar 18 Python
python实现小程序推送页面收录脚本
Apr 20 Python
python rolling regression. 使用 Python 实现滚动回归操作
Jun 08 Python
通过Python pyecharts输出保存图片代码实例
Nov 25 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 5.0 Pear安装方法
2006/12/06 PHP
PHP操作数组的一些函数整理介绍
2011/07/17 PHP
PHP基础知识回顾
2012/08/16 PHP
在Win7 中为php扩展配置Xcache
2014/10/08 PHP
php使用Cookie控制访问授权的方法
2015/01/21 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
2017/08/10 PHP
laravel手动创建数组分页的实现代码
2018/06/07 PHP
PHP var关键字相关原理及使用实例解析
2020/07/11 PHP
Javascript的构造函数和constructor属性
2010/01/09 Javascript
SlideView 图片滑动(扩展/收缩)展示效果
2010/08/01 Javascript
JavaScript中this的使用详解
2013/11/08 Javascript
javascript中setTimeout使用指南
2015/07/26 Javascript
基于JavaScript实现一定时间后去执行一个函数
2015/12/14 Javascript
javascript实现一个网页加载进度loading
2017/01/04 Javascript
Node.js实现连接mysql数据库功能示例
2017/09/15 Javascript
详解ES6语法之可迭代协议和迭代器协议
2018/01/13 Javascript
vue项目中在外部js文件中直接调用vue实例的方法比如说this
2019/04/28 Javascript
react quill中图片上传由默认转成base64改成上传到服务器的方法
2019/10/30 Javascript
jQuery实现全选、反选和不选功能的方法详解
2019/12/04 jQuery
JS如何实现封装列表右滑动删除收藏按钮
2020/07/23 Javascript
原生js实现下拉框选择组件
2021/01/20 Javascript
在Python的Django框架中用流响应生成CSV文件的教程
2015/05/02 Python
插入排序_Python与PHP的实现版(推荐)
2017/05/11 Python
Python3 实现随机生成一组不重复数并按行写入文件
2018/04/09 Python
python通过SSH登陆linux并操作的实现
2019/10/10 Python
Python GUI库PyQt5样式QSS子控件介绍
2020/02/25 Python
python实现暗通道去雾算法的示例
2020/09/27 Python
Python命令行参数argv和argparse该如何使用
2021/02/08 Python
总裁助理岗位职责
2014/02/17 职场文书
租赁协议书范本
2014/04/22 职场文书
难忘的一天教学反思
2014/04/30 职场文书
建筑节能汇报材料
2014/08/22 职场文书
中学生社区服务活动报告
2015/02/05 职场文书
莫言获奖感言(全文)
2015/07/31 职场文书
启迪人心的励志语录:脾气永远不要大于本事
2020/01/02 职场文书
css中:last-child不生效的解决方法
2022/08/05 HTML / CSS