Django:locals()小技巧

作者在 2010-03-22 01:01:36 发布以下内容

locals()小技巧
看看最近的current_datetime:

代码
def current_datetime(request):  
    now = datetime.datetime.now()  
    return render_to_response('current_datetime.html', {'current_date':now})  

这个例子中你会发现你自己计算一些值后存储在变量中(例如now)并传递给模板
懒程序员可能会觉得有点繁琐,既要给临时变量取名又要给模板变量取名
这不仅仅是冗余,这是过度输入
如果你很懒或者你想保持代码整洁,使用Python内建的locals()方法
locals()返回一个包含当前作用域里面的所有变量和它们的值的字典,上面的代码可以重写:
代码
def current_datetime(request):  
    current_date = datetime.datetime.now()  
    return render_to_response('current_datetime.html', locals())

这里我们传递locals()的值而不是手动指定context字典,locals()包含了所有定义在当前方法的变量
而且,我们把now变量重命名为current_date,因为模板需要的是这个变量名
这个例子中locals()不会给你太大改善,但这个技术可以帮你少敲键盘
使用locals()需要注意的是它包含了所有当前变量,可能包括比你的模板想访问的更多的变量
上面的例子中,locals()也包括request变量,这依赖于你的程序
最后要注意的是locals()导致了一点点开销,因为Python不得不动态创建字典
如果你手动指定context字典则可以避免这项开销
默认分类 | 阅读 3239 次
文章评论,共1条
变幻小子
2011-03-18 15:32
1
看看
游客请输入验证码
浏览2883830次
文章归档
最新评论
  • 时光拾荒者:CtrlCV还是强的😝
  • 硬识岩丝:解决了,太感谢了~
  • xiwang12:路过
  • 里苦不功:不校验mysql版本是否与当前django框架是否兼容