1
我得到了Jinja2的一些不尋常的行爲,並迭代了一個我無法完全放下手指的數組。我將一本字典傳入Jinja2,其中一個字典的值是一個數組。這是一個簡單的例子,可以。Jinja2陣列迭代問題
mydict = {
'testvar1': 'this is a test var 1',
'testvar2': 'this is a test var 2',
'testvar3': ['test','test','test','test','test'],
}
這是我的神社模板
{{ testvar1 }}
{{ testvar2 }}
{% for var in testvar3 %}
{{ var }}
{% endfor %}
現在這種實際工作,我得到下面的輸出
this is a testvar1
this is a testvar2
test
test
test
test
test
test
不過,我產生使用CSV導入實用程序的字典。現在我知道這個工具將所有的值作爲字符串導入,所以我用短劃線分隔'數組字段',以便稍後可以將它們分開。
input_file = csv.DictReader(open("./my_path/import.csv"))
for row in input_file:
for key, value in row.iteritems():
if '-' in value:
value = value.split('-')
當我打印手動創建的字典中的數組值和由csv導入創建的字典時,它們看起來完全相同。
['test','test','test','test','test']
但是,當我使用由csv import填充的dictonary生成配置時,我得到的輸出是完全不同的。
testvar1
testvar2
t
e
s
t
t
e
s
t
,...等
現在看來,它遍歷值,就像是份簡單的字符串值,在時間循環的每個迭代打印一個字符。
但是,當手動製作詞典時,它可以很好地工作。
任何想法?如果有更乾淨的方式來做到這一點,我就會全神貫注。
在此先感謝。
可能不重要,但爲什麼前兩個字符串打印在你的兩個例子中不同?第一個例子說「這是一個testvar1」,但第二個只是說「testvar1」。不要試圖挑剔,只是想了解這個輸出是如何產生的。 – Nacho
請顯示更多的Python代碼。比如你如何將你的變量傳遞給渲染函數。 –
你並不孤單!我有完全一樣的問題。 –