0

mako のドキュメントは、「Using Blocks」の直前に動的なオプションのレイアウトを持つことができることを示唆しているようですが、私はそれを思い出すのに苦労しています.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())

テンプレートで定義を動的に呼び出して列をレンダリングするにはどうすればよいですか?

マコテンプレート

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

したがって、1 人のユーザーが ('Name','Birth','Gender')、別の ('Gender','State', 'Birth') を要求し、3 番目のユーザーがそれらすべてを異なる順序で要求する可能性があります。mako テンプレートでこの機能をきれいにサポートするにはどうすればよいですか?

4

1 に答える 1

0

あなたの質問を理解できれば、次のようなことがうまくいくはずです:

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