簡體   English   中英

如何在Mako模板中使用dicts?

[英]How to use dicts in Mako templates?

每當我將復雜的數據結構傳遞給Mako時,很難迭代它。 例如,我傳遞了list的dict dict,並且要在Mako中訪問它,我必須做類似的事情:

% for item in dict1['dict2']['list']: ... %endfor

我想知道Mako是否有一些機制可以取代[]用法來簡單地訪問字典元素.

然后我可以將上面的行寫成:

% for item in dict1.dict2.list: ... %endfor

哪個更好,不是嗎?

謝謝,Boda Cydo。

簡化Ł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

另見: http//code.activestate.com/recipes/52308-the-simple-but-handy-collector-of-a-bunch-of-named/

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)

to_bunch傳遞給to_bunch函數,然后將其傳遞給Mako模板。 不幸的是,Mako沒有提供任何鈎子來自動執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM