我正在学习 Pyramid ,看来他们正在尝试让人们使用变色龙而不是mako,所以我想我应该给变色龙一个机会。到目前为止,我还是很喜欢的,我可以在模板中做一些基本的事情,例如if和for循环,但是我不确定如何使消息闪烁出现。

在 Pyramid 教程中,他们使用todo list进行此操作,但在wiki示例中,则不这样做。根据instructions about sessions并使用todolist教程作为示例,我已经能够使我的应用创建消息,但是无法在模板中接收消息。简而言之,我想知道变色龙是否具有与此mako代码等效的代码:

  % if request.session.peek_flash():
  <div id="flash">
    <% flash = request.session.pop_flash() %>
    % for message in flash:
    ${message}<br>
    % endfor
  </div>
  % endif

最佳答案

变色龙中的(未经测试的)等价物是:

<div id="flash" tal:condition="request.session.peek_flash()">
  <span tal:omit-tag=""
        tal:repeat="message request.session.pop_flash()">
      ${message}<br>
  </span>
</div>

tal:omit-tag attribute是可选的;它将<span>标记从输出中删除,因为它仅用作将重复序列附加到其上的虚拟标记。通过删除它,变色龙模板的输出将与Mako示例匹配。

有关模板语言如何工作的介绍和完整说明,请参见Chameleon documentation

10-08 15:11