3

Mako ファイルで次のようなことを行います。

%for operation in operation_list:
    ${operation['name']}
    ${${operation['name']}Body()}
%endfor

<%def name="operationOneBody()">
   some stuff
</%def>

<%def name="operationTwoBody()">
   some other stuff
</%def>

基本的に、コンテキストには「operationOne」と「operationTwo」という名前の操作が含まれることを期待しており、どの Mako Def を挿入するかを動的に決定したいと考えています。

${${operation['name']}Body()}のアイデアは、内側の ${} タグ${operation['name']}が「operationOne」、次に「operationTwo」などに解決されるため、外側の ${} は${operationOneBody()}最初のループと${operationTwoBody()}2 回目のループのように見えるということです。など - これにより、適切な定義が呼び出され、最終的にそれらの場所に必要な実際のコンテンツが埋められます。

4

1 に答える 1

5

操作名でキー設定された辞書に関数を入れることができます。私はこれがあなたが望むことをするべきだと思います:

<% operations = { 'one': operationOneBody, 'two': operationTwoBody } %>

%for operation in operation_list:
    ${operation['name']}
    ${operations[operation['name']]()}
%endfor

<%def name="operationOneBody()">
   some stuff
</%def>

<%def name="operationTwoBody()">
    some other stuff
</%def>
于 2012-12-11T23:23:34.020 に答える