a を関数として使用し、ブロック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 で囲むの<% %>
が良いようです。