我正在将一堆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,不是吗?
答案 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>