1

Mako で慣れているように、Chameleon でテンプレート フィルタを使用する可能性はありますか? マコでは、次のようなことができます

${s | filter}

ここfilterで、文字列を文字列にマッピングする関数であり、Mako が適用さfiltersて出力されます (HTML エンティティをエスケープした後)。したがって、次のようなことを簡単に行うことができます

${s | nl2br}

それを行う Chameleon の方法は、 Chameleon のLine Breaking であることを認識しています。しかし、このフィルターにはもっと多くのアプリケーションがあるので、Chameleon で同様のものがサポートされているかどうか疑問に思っています。

4

3 に答える 3

1

Chameleon では、パイプ演算子 (" | ") 演算子は、"フィルターの適用" ではなく、try-except を意味します。

しかし、式言語は単なる Python であるため、そのような構文糖衣は必要ありません。

また、Chameleon には、import:ヘルパー関数のインポートに役立つ式タイプがあります。

<div tal:define="h import: helpers">
  ...
  ${structure: h.nl2br(s)}

nl2brメソッドを実装したオブジェクトが返された場合、Chameleon はこのメソッドを呼び出して出力を生成するため、HTML エスケープを回避する__html__()必要がないことに注意してください。structure:

そうは言っても、Mako のフィルタ オペレータを使用すると、より読みやすいテンプレート コードが作成されることがあるのは事実です。

于 2013-03-04T12:10:58.530 に答える
1

いいえ、ありません。代わりにビューで処理を行うか、TALES 式で Python コードを使用してください。

于 2013-02-24T11:49:29.613 に答える
0

カメレオンのやり方は

${nl2br(s)}

こんな感じでやってます

ビュー.py

form helpers import nl2br
def my_view(request):
    return {
        'nl2br':nl2br,
    }

template.pt

${structure: nl2br(s)}
于 2013-02-24T15:44:08.640 に答える