Python Mako模板技术 - 如何根据上下文中的值动态决定调用哪个def或函数?

3
我会在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>

基本上,我预计上下文将包含名称为“operationOne”和“operationTwo”的操作,并且我希望动态决定要插入哪个Mako Def。
在行${${operation['name']}Body()}中,内部${}标记的想法是${operation['name']}将解析为“operationOne”,然后是“operationTwo”等等,因此外部${}将看起来像${operationOneBody()}第一次通过循环,${operationTwoBody()}第二次通过,依此类推——这将导致调用适当的defs,最终填充我想要的实际内容。
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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接