我正在学习 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。