Django模板语法错误:无法解析剩余部分:'()
我正在尝试在Django模板页面中遍历一个字典里面的字典。
{% for (key_o, value_o) in f_values.items() %}
<tr class="row {% cycle 'odd' 'even' %}">
{% for (key_i, val_i) in value_o.items() %}
<td class="tile ">
{{ val_i }}
</td>
{% endfor %}
</tr>
{% endfor %}
但是我遇到了这个错误。
TemplateSyntaxError at /tree/branches/
Could not parse the remainder: '()' from 'f_values.items()'
这个错误是怎么回事呢?
--更新
这是我创建f_values
的方式。
columnValues = []
for idx_o, val_o in enumerate(results['values']):
columnValues[idx_o] = {}
for idx_i, val_i in enumerate(val_o):
columnValues[idx_o][idx_i] = {}
columnValues[idx_o][idx_i]['value'] = val_i
name = columnNames[idx_i]
columnValues[idx_o][idx_i]['name'] = name
columnValues[idx_o][idx_i]['format'] = {}
for val_f in formats:
if (name == val_f.Header) :
columnValues[idx_o][idx_i]['format']['LowerLimit'] = val_f.LowerLimit
data = {
'f_values': columnValues,
}
2 个回答
0
在Jinja语法中,你不需要使用括号。你可以这样做:
{% for (key_o, value_o) in f_values.items %}
<tr class="row {% cycle 'odd' 'even' %}">
{% for (key_i, val_i) in value_o.items %}
<td class="tile ">
{{ val_i }}
</td>
{% endfor %}
</tr>
{% endfor %}
61
在模板中调用方法时,你不需要使用()
,只需用f_values.items
就可以了。这种写法适用于列表、元组和函数。
举个例子,如果你有这些Python值:
lst = ['a', 'b', 'c']
di = {'a': 'a'}
class Foo:
def bar(self): pass
foo = Foo()
在你的模板中,你可以这样访问它们:
{{ lst.0 }}
{{ di.a }}
{{ foo.bar }}
对于你的代码:
{% for (key_o, value_o) in f_values.items %}
<tr class="row {% cycle 'odd' 'even' %}">
{% for (key_i, val_i) in value_o.items %}
<td class="tile ">
{{ val_i }}
</td>
{% endfor %}
</tr>
{% endfor %}