我有像
这样的mako模板<%def name="header()"></%def>
<header class="header">
${self.header()}
</header>
其他模板继承自。现在,一些继承的模板不会定义标头。在这种情况下,我不希望显示<header>
标记。
如何检查def命名标题是否被覆盖(或仍为空)?
答案 0 :(得分:1)
您可以使用内置capture()
函数(解释here)将输出收集到变量,然后使用% if
语句进行检查。这是生成正确输出的示例:
<%def name="header()"></%def>
<%
h = capture(self.header)
%>
% if h:
<header class="header">
${h}
</header>
% endif
它不是很优雅,可能会略微减慢你的模板速度。但谁在乎?它解决了这个问题:)