在Flask中的数组上迭代

2024-03-29 15:11:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图迭代Flask中的一个数组

{% for list in lists %}
    <div>{{list}}</div>
{% endfor %}

此模板正在呈现以下内容:

<div>
    {'list': '2', 'item': '["a", "b", "c"]', 'created_at': '2020-07-12 17:19:52'}
</div>

现在,我想使用«item»字段中的项来呈现ul,而不是整个数据:

{% for list in lists %}
    <ul>
        {% for item in list.item %}
            <li>{{item}}</li>
        {% endfor %}
    </ul>
{% endfor %}

但我最终得出的结论是:

<ul>                        
     <li>[</li>
     <li>"</li>
     <li>a</li>
     <li>"</li>
     <li>,</li>
     <li> </li>
     <li>"</li>
     <li>b</li>
     <li>"</li>
     <li>,</li>
     <li> </li>
     <li>"</li>
     <li>c</li>
     <li>"</li>
     <li>]</li>
</ul>

我做错了什么


Tags: 数据indiv模板flaskforli数组
1条回答
网友
1楼 · 发布于 2024-03-29 15:11:16

list.item是一个字符串。如果在字符串上迭代,则在每个字符上迭代

您可以更改模板,因此list.item是一个列表,方法是删除引号

<div>
    {'list': '2', 'item': ["a", "b", "c"], 'created_at': '2020-07-12 17:19:52'}
</div>

如果您不能直接控制要更改的输入,例如,您可以使用^{}函数来反序列化字符串

>>> list_items = '["a", "b", "c"]'
>>> import json
>>> for item in json.loads(list_items):
...    print(item)
...
a
b
c  

相关问题 更多 >