2015-06-01 41 views
3

說,我這本字典Python的模板,檢查變量的值類型迭代

{"k1":"dog", "k2":"cat", "k3":["Pochi","Wanwan"]} 
在我的模板

現在,我遍歷像這樣:

{% for key, value in dict.iteritems() %} 
    <tr> 
     <td>{{ key }}</td> 
     <td>{{ value }}</td> 
    </tr> 
{% endfor %} 

但我確實想在標籤內做一些額外的處理,是否可以檢查「值」是列表還是字典類型?所以,我可以做一些事情,比如說他們的子彈,而不僅僅是吐出清單。

回答

1

要檢查是否「值」是一本字典類的,你可以不喜歡

{% for key, value in dict.iteritems() %} 
<tr> 
    <td>{{ key }}</td> 
    {% if value is mapping %} 
     "Do something" 
    {% else %} 
     <td>{{ value }}</td> 
</tr> 
{% endfor %} 

東西要檢查是否「值」是一個列表類型的,你可以創建一個自定義過濾器。 Here's您會發現有用的鏈接。

編輯:下面是如何創建自定義過濾器的示例。首先,功能

def is_list(value): 
    return isinstance(value, list) 

然後聲明過濾作用

from flask import Flask 
app = Flask(__name__) 
.... 
app.jinja_env.filters['is_list'] = is_list 

然後過濾器會在您的模板可用。

+0

提供的鏈接似乎有列表檢查的答案,但它似乎不像我的jinja2模塊的發現Jinja2 :(任何替代方法?沒關係,只是看到了你的編輯 –

+0

檢查值是否是一個'iterable'。 –

+0

剛剛測試過這個,問題在於字符串也是可迭代的,所以我會得到一個字符串切分的字符串 –