对current_datetime 的一次赋值操作:
def current_datetime(request):
now = datetime.datetime.now()
return render(request, "current_datetime.html", {"current_datetime": now})
很多时候,就像上面的代码一样,你会觉得自己是在计算某个变量,保存结果到变量中,比如前的的now,就是进行赋值后在传送到模板中。其中喜欢偷懒的程序员就会注意到,不断地编写临时变量的临时模板命名有一些多余。不仅是多余,而且还需要额外的输入。
如果你是个喜欢偷懒的程序员并且想让代码看起来更加简洁明了,可以利用Python内建函数locals()。它返回的字典对所有局部变量名称与值相对应。所以你可以尝试一下下面的方法。
def current_datetime(request):
current_date = datetime.datetime.now()
return render(request, "current_datetime.html", locals())
在此,我们没有像之前的那样手工进行指定context字典,而是传入locals() 的值,它囊括了函数执行到改时间点所定义的一切变量。因此,我们将now变量重命名为current_date,因为那才是模板语言预期的变量名称。在这个案例中,locals() 并没有带来多大的改进,但是如果有多个模板变量时,这个方法就可以让你提高效率,当然也会减少一些键盘输入。
使用locals() 时要注意是它,包括了所有的局部变量,它们可能比你想让模板访问的要多。在这个案例中,locals() 包含了request。当然你也可以去获取这个locals() 中的变量。



