mako文档似乎暗示能够在“使用块”之前拥有动态的可选布局,但是我很难将其外包出来。它
people = dict_cursor.fetchall()
all_possible_cols = ('Name','Birth','Gender', 'Address','City','State', ...]
user_cols = user_wants(user_id) # ('State','Gender','Name')
template.render(**locals())
如何动态调用模板中的defs来渲染列?
mako模板
% for person in people:
<tr>
% for col in user_cols:
How do I dynamically call the def/block?
% endfor
</tr>
% endfor
<%def name="Name()"> ... </%def>
<%def name="Birth()"> ... </%def>
<%def name="Gender()"> ... </%def>
<%def name="Address()"> ... </%def>
<%def name="City()"> ... </%def>
<%def name="State()"> ... </%def>
因此,一个用户可能想要('姓名','出生','性别'),另一个用户('性别','州','出生'),而第三个用户可能想要它们以不同的顺序。如何在mako模板中干净地支持此功能?
答案 0 :(得分:0)
如果我理解你的问题,这样的事情应该有效:
<tr>
% for col in user_cols:
${getattr(self, col)()}
% endfor
</tr>