0

mako 文档似乎暗示了在“使用块”之前能够拥有动态的、可选的布局,但我很难把它弄出来。cle

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 来呈现列?

鲭鱼模板

% 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>

因此,一个用户可能想要('Name','Birth','Gender'),另一个用户('Gender','State','Birth'),而第三个用户可能希望它们以不同的顺序排列。如何在 mako 模板中干净地支持此功能?

4

1 回答 1

0

如果我理解你的问题,这样的事情应该有效:

<tr>
  % for col in user_cols:
    ${getattr(self, col)()}
  % endfor
</tr>
于 2011-05-20T18:11:37.610 回答