2010-11-09 295 views
5

我想弄清楚如何使用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,則會產生錯誤。所以我只想在變量被定義時加入這個。有沒有解決這個問題的方法?

回答

3

轉動測試成hasattr(c, 'messages') and len(c.messages) > 0 ..或默認簡單地組消息到[]

+1

請注意,如果c是字典,上述操作將不起作用,但您可以使用'len(c.get ('messages',[]))> 0'。 – 2013-08-31 08:36:09

0

我很欣賞我正在挖掘舊線程,但有一個替代解決方案。

我一直在努力讓定義()正常工作。我已經找到了最有效的解決方案是使用一個列表如下:

py:if="myobject.thelist.get('blah',0) == 0" 

基本的Python在元史 - 如果它是不確定的,我們給它的默認值。如果您需要確保默認值不會污染您的數據,請返回除0之外的其他內容。