编程语言
首页 > 编程语言> > Python Mako模板 – 如何基于上下文中的值动态决定调用哪个def或函数?

Python Mako模板 – 如何基于上下文中的值动态决定调用哪个def或函数?

作者:互联网

我会在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得到调用,最终将填写我想要的那些地方的实际内容.

解决方法:

您可以将函数放入由操作名称键入的字典中.我认为这应该做你想要的:

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

标签:mako,python,templates
来源: https://codeday.me/bug/20190901/1783452.html