如何在Django模板中对数据集x的'valuess'键执行for循环?
解决Django模板中遍历嵌套列表内字典的'valuess'问题
你传递给模板的data是一个包含单个字典的列表,所以得先处理外层的列表结构,再访问字典里的valuess键。下面是两种可行的实现方式:
方法一:直接通过索引取列表内的字典
因为你的列表只有一个元素,直接用模板语法的索引.0拿到字典,再遍历它的valuess:
<!-- xyz.html 模板代码 --> {% if data %} <h3>{{ data.0.title }}</h3> <ul> {% for item in data.0.valuess %} <li>{{ item }}</li> {% endfor %} </ul> {% endif %}
data.0对应列表里的第一个(也是唯一一个)字典- 加
{% if data %}是为了避免列表为空时触发模板错误
方法二:遍历外层列表(更通用)
如果以后你的列表可能包含多个字典,用这种方法更灵活,先遍历外层列表的每个字典,再遍历每个字典的valuess:
<!-- xyz.html 模板代码 --> {% for record in data %} <h3>{{ record.title }}</h3> <ul> {% for item in record.valuess %} <li>{{ item }}</li> {% endfor %} </ul> {% empty %} <p>No records found.</p> {% endfor %}
{% empty %}用来处理列表为空的情况,显示友好提示
关键注意点
- 务必保证键名是
valuess,不要写成之前误写的values,拼写错误会导致无法获取数据 - Django模板中访问列表索引使用
.数字格式(比如data.0),不支持Python的方括号索引写法
内容的提问来源于stack exchange,提问作者Abhishek
相关产品推荐
相关产品推荐

