检查tmpl_context(Python,Pylons,Genshi)中是否存在变量?
问题描述:
我想弄清楚如何使用Pylons和Python在模板上下文'tmpl_context'中检查变量是否存在。我正在尝试的是:检查tmpl_context(Python,Pylons,Genshi)中是否存在变量?
我有一个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,则会产生错误。所以我只想在变量被定义时加入这个。有没有解决这个问题的方法?
答
元史具有用于突出部分定义的方法,该方法
如果定义(消息):
http://genshi.edgewall.org/wiki/Documentation/templates.html#defined-name
答
转动测试成hasattr(c, 'messages') and len(c.messages) > 0
..或默认简单地组消息到[]
答
我很欣赏我正在挖掘旧线程,但有一个替代解决方案。
我一直在努力让定义()正常工作。我已经找到了最有效的解决方案是使用一个列表如下:
py:if="myobject.thelist.get('blah',0) == 0"
基本的Python在元史 - 如果它是不确定的,我们给它的默认值。如果您需要确保默认值不会污染您的数据,请返回除0之外的其他内容。
请注意,如果c是字典,上述操作将不起作用,但您可以使用'len(c.get ('messages',[]))> 0'。 – 2013-08-31 08:36:09