相当于py:strip for Mako?

时间:2013-01-31 09:15:39

标签: python pyramid template-engine mako genshi

我正在将一堆Genshi模板转换为Mako。

我倾向于在Genshi中使用它:

<span class="special" py:strip="challenge">Company</span>

Genshi的功能是删除类标签,只有在挑战成立时才留下公司。

Mako最好的方法是什么?

我想出了

   % if not challenge:
       <span class="special">
   % endif   
   Company
   % if not challenge:
       </span>
   % endif

但是两个控制结构似乎是一对多。

或者这个

% if not challenge:
  <span class="special">Company</span>
% else:
  Company
% endif

这只是一个控制结构,但我重复了两次公司这个词。这里的情况并不差,但如果我的内容比公司这个词大得多,那将会很难看。

必须有一个优雅的等效于py:strip for Mako,不是吗?

2 个答案:

答案 0 :(得分:1)

Mako Def可能会帮到你。它允许一些“功能”之王被定义为在整个模板中多次应用于内容。

使用Def的最有用方法可能是Def with embedded contents,它允许像

这样的代码
<%self:buildtable>
    I am the table body.
</%self:buildtable>

然后处理Def。

中定义的内容

答案 1 :(得分:-1)

Mako中没有py:strip的等价物。因为Mako是按字节操作的,而不是html / xml标签。

除了Mako之外,Pyramid还带有Chameleon(像Genshi这样的XML / HTML模板引擎)。在Chameleon中它将是:

<span class="special" tal:omit-tag="challenge">Company</span>