より一般的なソリューション
より一般的な解決策を考え出す必要がある場合relationship
は、静的文字列の代わりにクラスタグ内で呼び出される変数を配置する必要があるとしましょう。古い文字列フォーマットで次のようにすることができます:
<a href="#" ${'class="%s"' % relationship if c.has_relation is True else ''}>link</a>
または文字列フォーマットなし:
<a href="#"
% if c.has_relation is True:
class="${relationship}"
% endif
>link</a>
これは、Python 2.7+ および 3+ で機能するはずです。
警告 (古いバージョンの場合)
{}
中身に注目${}
!
Jochen が言及した三項演算子を使用したソリューションも正しいですが、 と組み合わせると予期しない動作につながる可能性がありますstr.format()
。
どうやら Mako は最初の を見つけた後に式の解析を停止するため、{}
Mako の内部は避ける必要があります。これは、たとえば次のように使用しないことを意味します。${}
}
${'{}'.format(a_str)}
. 代わりに を使用します${'%s' % a_str}
。
${'%(first)s %(second)s' % {'first': a_str1, 'second': a_str2}}
. 代わりに使用
${'%(first)s %(second)s' % dict(first=a_str1, second=a_str2)}