如何在python mako模板中使用eval()

时间:2014-03-19 00:46:52

标签: python eval mako

在python中,可以使用eval('dyn_var_name')动态创建变量名称 我想在我的mako模板中执行此操作,但下面是示例代码:

from mako.template import Template
print Template("hello ${eval('data{}'.format(0))}!").render(data0="world")

返回NameError: name 'data0' is not defined,即。变量名仍然是字符串'data0',并且不对应于相应的键名data0; eval()没有完成它的工作。怎么去完成这个?

事先提前

1 个答案:

答案 0 :(得分:0)

您可以使用pageargs词典而非eval

执行此操作
from mako.template import Template
print Template("hello ${pageargs['data{}'.format(0)]}!").render(data0="world")

但是,从您的示例中可能看起来您可能有一堆变量,每个变量的名称分别为data0data1data2等。为什么不将它们作为列表传递给渲染而不是那么多同样命名的变量?类似的东西:

`Template("hello ${data[0]}!").render(data=["world"])`)

另见keep data out of your variable names