首先,我必须承认我不是python还是django模板(jinja)语言方面的专家,所以如果我错过了某些事情,对此我感到抱歉。
我写了一个简单的python字典来保存其他具有以下代码的数据:
all_dividend_tx_additional_info[company] =
{'date': dividend.time_of_payment,
'shares': dividend.shares_owned,
'amount': dividend.amount,
'currency': dividend.currency,
'total_amount': total_amount,
'tax': tax,
'payout': payout
}
字典索引中的公司将由for循环中的真实公司名称填写,但基本上是这样:
{u'BAKKA': {u'amount': Decimal('15.00'),
u'currency': u'NOK',
u'date': datetime.datetime(2018, 12, 4, 16, 0, 22, tzinfo=<UTC>),
u'payout': 180.0,
u'shares': 12,
u'tax': 55.080000000000005,
u'total_amount': Decimal('180.00')}}
但是,当我尝试像这样迭代时:
for key, value in all_dividend_tx_additional_info.iteritems:
print key, value
我收到以下错误: 'builtin_function_or_method'对象不可迭代
但是,当我尝试使用此字典并将其发送到模板时,它可以很好地使用以下语法:
{% for key, value in all_dividend_tx_additional_info.items %}
{{ key }} - {{ value }}
有人可以解释为什么它在Django模板中与python代码相比可迭代吗?显然这里有些差异我可能已经错过了,但是我似乎无法弄清楚为什么。
答案 0 :(得分:0)
iteritems
是字典的方法(函数)。它没有参数,但是要应用它来获取(键,值)对,您必须添加括号:
for key, value in all_dividend_tx_additional_info.iteritems():
答案 1 :(得分:0)
for key, value in all_dividend_tx_additional_info.items():
print(key, value)
对于Python 2.x,请尝试iteritems()
for key, value in all_dividend_tx_additional_info.iteritems():
print(key, value)