17

クラスが適用されているかどうかを判断するために使用したいテンプレート変数 c.is_friend があります。例えば:

if c.is_friend is True
<a href="#" class="friend">link</a>

if c.is_friend is False
<a href="#">link</a>

次のように、これをインラインで行う方法はありますか?

<a href="#" ${if c.is_friend is True}class="friend"{/if}>link</a>

それともそのようなものですか?

4

2 に答える 2

34

動作する場合のPythonの通常のインライン:

<a href="#" ${'class="friend"' if c.is_friend else ''}>link</a>
于 2010-05-15T22:00:36.847 に答える
4

より一般的なソリューション

より一般的な解決策を考え出す必要がある場合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)}
于 2017-12-07T11:30:42.623 に答える