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合并文本文件示例
Feb 07 Python
python多线程操作实例
Nov 21 Python
分享python数据统计的一些小技巧
Jul 21 Python
基于Python实现对PDF文件的OCR识别
Aug 05 Python
Python3计算三角形的面积代码
Dec 18 Python
基于pandas数据样本行列选取的方法
Apr 20 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
Aug 21 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
Oct 17 Python
Django创建一个后台的基本步骤记录
Oct 02 Python
python之openpyxl模块的安装和基本用法(excel管理)
Feb 03 Python
python如何修改文件时间属性
Feb 05 Python
pytorch 实现L2和L1正则化regularization的操作
Mar 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一些公用函数的集合
2008/03/27 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
2011/06/28 PHP
Array of country list in PHP with Zend Framework
2011/10/17 PHP
Laravel 5框架学习之Blade 简介
2015/04/08 PHP
php根据日期或时间戳获取星座信息和生肖等信息
2015/10/20 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
2017/04/10 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
用Laravel轻松处理千万级数据的方法实现
2020/12/25 PHP
jQuery 获取对象 定位子对象
2010/05/31 Javascript
JavaScript将XML转成JSON的方法
2015/03/12 Javascript
详解JavaScript中的表单验证
2015/06/16 Javascript
JavaScript面试开发常用的知识点总结
2016/08/08 Javascript
bootstrap基础知识学习笔记
2016/11/02 Javascript
基于vue2.0实现的级联选择器
2017/06/09 Javascript
JavaScript设计模式之代理模式简单实例教程
2018/07/03 Javascript
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
elementUI多选框反选的实现代码
2019/04/03 Javascript
python使用multiprocessing模块实现带回调函数的异步调用方法
2015/04/18 Python
深入理解Python中命名空间的查找规则LEGB
2015/08/06 Python
浅析PHP与Python进行数据交互
2018/05/15 Python
python 拼接文件路径的方法
2018/10/23 Python
python re.sub()替换正则的匹配内容方法
2019/07/22 Python
Python新手学习装饰器
2020/06/04 Python
什么是python的自省
2020/06/21 Python
德国网上花店:Valentins
2018/08/15 全球购物
阿玛尼美妆英国官网:Giorgio Armani Beauty英国
2019/03/28 全球购物
物业门卫岗位职责
2013/12/28 职场文书
《胡杨》教学反思
2014/02/16 职场文书
数控专业毕业生自荐信范文
2014/03/04 职场文书
建筑工程技术专业求职信
2014/07/16 职场文书
家具商场的活动方案
2014/08/16 职场文书
预备党员学习十八届三中全会精神思想汇报
2014/09/13 职场文书
12.4法制宣传日标语
2014/10/08 职场文书
python spilt()分隔字符串的实现示例
2021/05/21 Python
Mybatis-plus在项目中的简单应用
2021/07/01 Java/Android