Django模板遍历对象内嵌套列表仅返回键首字母问题
问题原因
直接对字典做for遍历时,Django模板默认迭代返回的是字典的键(字符串类型),不是键对应的列表值。你代码里的entry实际是Value1/Value2/Value3这类字符串,此时取entry.0拿到的是字符串的首字母,循环遍历entry也是在逐字符遍历字符串,自然无法获取列表内的元素。
解决方案
遍历字典时调用.items方法获取键值对即可,Django模板中调用无参方法不需要加括号:
- 如果需要逐行展示键、并遍历对应列表的所有元素生成单元格,用以下写法:
{% for key, value_list in data.items %} <tr> <td>{{ key }}</td> {% for num in value_list %} <td>{{ num }}</td> {% endfor %} </tr> {% endfor %}
- 如果只需要展示键和对应列表的第一个元素,用以下写法:
{% for key, value_list in data.items %} <tr> <td>{{ key }}</td> <td>{{ value_list.0 }}</td> </tr> {% endfor %}
注意:需要确保视图传给模板的
data是原生Python字典类型,不要提前转成JSON字符串再传入,否则遍历逻辑会异常。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

