jon*_*omo 3 python templates mako
我会在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>
Run Code Online (Sandbox Code Playgroud)
基本上,我期望上下文将包含名称为"operationOne"和"operationTwo"的操作,我想动态决定插入哪个Mako Def.
在该行中${${operation['name']}Body()}
,想法是在内部$ {}标记${operation['name']}
将解析为"operationOne",然后"operationTwo"等等,因此外部$ {}将看起来像${operationOneBody()}
第一次通过循环,${operationTwoBody()}
第二次通过等等 - 这将导致适当的defs被调用,这将最终填充我想要在那些地方的实际内容.
小智 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>
Run Code Online (Sandbox Code Playgroud)