Mako:def composition(在渲染时)未正确计算

2024-04-30 05:24:28 发布

您现在位置:Python中文网/ 问答频道 /正文

在理解Mako(Python模板引擎)的过程中,我开始使用defs构造。你知道吗

我试图做的一件事是用def调用生成一个通用的“if”语句(比如JavaScript语句)。以下是文本:

<%def name="if_statement(x)">if (${x})</%def>
<%def name="sample_condition()">3 == 3</%def>

${if_statement(sample_condition())}

输出不是期望的if(3 == 3),而是3 == 3if(),就像if_statement的参数在def的任何其他内容之前被求值并在前面呈现一样。你知道吗

这是预期的行为吗?如果是,为什么? 还有,我怎样才能达到我想做的?你知道吗


Tags: samplename引擎文本模板参数if过程
1条回答
网友
1楼 · 发布于 2024-04-30 05:24:28

是的,由于buffering,这是一个需要的行为,但是通过使用内置的capture()函数,您可以很容易地让它按您想要的方式工作。以下是工作示例:

<%def name="if_statement(x)">if (${x})</%def>
<%def name="sample_condition()">3 == 3</%def>

${if_statement(capture(sample_condition))}

结果是if (3 == 3)。你知道吗

相关问题 更多 >