1

是否有可能像我在 Mako 中使用的那样在 Chameleon 中使用模板过滤器?在 Mako 中,可以做类似的事情

${s | filter}

wherefilter是将字符串映射到字符串的函数,并将 Mako 应用于filters输出它(在转义 HTML 实体之后)。所以一个人可以很容易地做一些事情,比如

${s | nl2br}

我知道 Chameleon 的做法是Line Breaking in Chameleon。但是我有更多用于此过滤器的应用程序,所以我想知道 Chameleon 是否支持类似的东西。

4

3 回答 3

1

不,没有。而是在您的视图中进行处理,或者在您的 TALES 表达式中使用 python 代码。

于 2013-02-24T11:49:29.613 回答
1

在 Chameleon 中,管道运算符 (" | ") 运算符表示 try-except,而不是“应用过滤器”。

但是由于表达式语言只是 Python,因此不需要使用这种语法糖。

此外,Chameleon 有一个import:表达式类型可以帮助您导入辅助函数:

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

请注意,如果nl2br返回一个实现__html__()方法的对象,Chameleon 将调用此方法来生成输出,您无需structure:避免 HTML 转义。

也就是说,确实 Mako 的过滤器操作符有时会使模板代码更具可读性。

于 2013-03-04T12:10:58.530 回答
0

变色龙的方式是

${nl2br(s)}

我正在这样做

视图.py

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

模板.pt

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