Я бы хотел использовать def
как функцию и вызывать ее из блока if
:
<%def name="check(foo)">
% if len(foo.things) == 0:
return False
% else:
% for thing in foo.things:
% if thing.status == 'active':
return True
% endif
% endfor
% endif
return False
</%def>
% if check(c.foo):
# render some content
% else:
# render some other content
% endif
Излишне говорить, что этот синтаксис не работает. Я не хочу просто выполнять подстановку выражений (и просто отображать выходные данные def), поскольку логика согласована, но отображаемый контент отличается от места к месту.
Есть ли способ сделать это?
Edit:
Заключение логики в определение в <% %>
, похоже, является наилучшим решением.