Проверьте, является ли%def пустым в шаблоне mako
У меня есть мако шаблон, как
<%def name="header()"></%def>
<header class="header">
${self.header()}
</header>
что другие шаблоны наследуют от. Теперь некоторые шаблоны, которые наследуют, не будут определять заголовок. В этом случае я не хочу <header>
тег, чтобы появиться.
Как я могу проверить, был ли переименованный заголовок def перезаписан (или все еще пуст)?
1 ответ
Вы можете использовать встроенный capture()
функция (объясненная здесь), чтобы собрать вывод в переменную и затем проверить его с помощью % if
заявление. Вот пример генерации правильного вывода:
<%def name="header()"></%def>
<%
h = capture(self.header)
%>
% if h:
<header class="header">
${h}
</header>
% endif
Это не очень элегантно и может немного замедлить ваш шаблон. Но кого это волнует? Это решает проблему:)