2

ドキュメントで見つけられなかったmakoの新機能...

私がそれでやりたいことの1つは次のとおりです。

<%mytag n=12>
blabla ${x}
</%mytag>

次のように機能します。

X[n](ここではX[12]) 変数が int または string の場合、コンテンツを= x = X[12]
> WithX[12] = 23でレンダリングします。レンダリングします: blabla 23

それ以外の場合X[n]がリストの場合、ループを実行し、 =>forの各値の内容を繰り返します。次のようにレンダリングします。 x in X[n]
X[12] = [1, 2, 'bla']

blabla 1
blabla 2
blabla bla

可能であれば、私がやりたいことを行う方法についてアドバイスを与える前に、主な質問 (カスタムタグを行うことは可能ですか?) に答えてみてください:)

4

1 に答える 1

5

名前空間」ドキュメントは、具体的には、あなたが何を求めているかを説明しているようです:

名前空間は、モジュールから通常の Python 関数をインポートすることもできます。これらの callable は、少なくとも 1 つの引数 、contextのインスタンスを取る必要がありますContext。モジュール ファイル some/module.py には、次の callable が含まれている場合があります。

def my_tag(context):
    context.write("hello world")
    return ''

テンプレートは、次の方法でこのモジュールを使用できます。

<%namespace name="hw" module="some.module"/>

${hw.my_tag()}

..と:

「カスタムタグ」形式は、主に本文コンテンツを認識する名前空間関数を対象としています。これは、Mako では「コンテンツが埋め込まれた定義」として知られています。

<%mynamespace:somefunction arg1="some argument" args="x, y">
    Some record: ${x}, ${y}
</%mynamespace:somefunction>
于 2013-08-07T10:42:24.237 に答える