Python 如何在Mako模板中使用dicts?
每当我将一个复杂的数据结构传递给Mako时,就很难对其进行迭代。例如,我传递了一个dict of list,要在Mako中访问它,我必须执行以下操作: dict1['dict2']['list']中项目的Python 如何在Mako模板中使用dicts?,python,templates,mako,Python,Templates,Mako,每当我将一个复杂的数据结构传递给Mako时,就很难对其进行迭代。例如,我传递了一个dict of list,要在Mako中访问它,我必须执行以下操作: dict1['dict2']['list']中项目的%:…%endfor 我想知道Mako是否有某种机制可以取代[]使用简单的访问字典元素 然后我可以把上面的一行写成: dict1.dict2.list中项目的%:…%endfor 哪个更好,不是吗 谢谢,波达·西多 class Bunch(dict): def __init__(self
%:…%endfor
我想知道Mako是否有某种机制可以取代[]
使用简单的
访问字典元素
然后我可以把上面的一行写成:
dict1.dict2.list中项目的%:…%endfor
哪个更好,不是吗
谢谢,波达·西多
class Bunch(dict):
def __init__(self, d):
dict.__init__(self, d)
self.__dict__.update(d)
def to_bunch(d):
r = {}
for k, v in d.items():
if isinstance(v, dict):
v = to_bunch(v)
r[k] = v
return Bunch(r)
在将dict1传递给Mako模板之前,先将其传递给
传递给\u bunch
函数。不幸的是,Mako没有提供任何自动执行此操作的挂钩。简化Łukasz'示例:
class Bunch:
def __init__(self, d):
for k, v in d.items():
if isinstance(v, dict):
v = Bunch(v)
self.__dict__[k] = v
print Bunch({'a':1, 'b':{'foo':2}}).b.foo
另请参见:谢谢你Łukasz,这是一个极好的回答,我理解了一切。谢谢你,杰西。我已经在看文件了!:)(我在另一个帖子上问了一个类似的问题,有人建议了。帖子在这里,也许你也感兴趣:)