我试图弄清楚如何使用Pylons和Python检查模板上下文'tmpl_context'中是否存在变量。我想做的是:
我有一个Pylons布局模板。当且仅当变量c.messages
存在于上下文中时,这应包含消息部分。消息部分如下所示:
<div py:if="len(c.messages) > 0">
<py:for each="msg in c.messages">
<strong>${msg}</strong>
</py:for>
</div>
如果控制器没有定义c.messages,则会产生错误。所以我只想在定义变量时才包含它。这个问题有解决方案吗?
答案 0 :(得分:5)
答案 1 :(得分:3)
将测试转换为hasattr(c, 'messages') and len(c.messages) > 0
..或者只是默认将消息设置为[]
答案 2 :(得分:0)
我很欣赏我正在挖掘一个旧线程,但有一个替代解决方案。
我总是努力让定义()正常工作。我发现最有效的解决方案是使用以下列表:
py:if="myobject.thelist.get('blah',0) == 0"
Genshi中的基本Python - 如果它未定义,我们给它一个默认值。如果您需要确保默认值不会污染您的数据,请返回0以外的其他内容。