Перебрать массив в Flask - PullRequest
0 голосов
/ 12 июля 2020

Я пытаюсь перебрать массив в 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>

Теперь вместо всех данных я хочу отобразить ul, используя элементы в поле «item»:

{% 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>

Что я делаю не так?

1 Ответ

0 голосов
/ 12 июля 2020

list.item - строка. Если вы перебираете строку, вы перебираете каждый символ.

Вы можете изменить шаблон, поэтому list.item является списком, удалив кавычки.

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

Если вы не контролируйте ввод для изменения напрямую, вы можете, например, использовать функцию json.loads для десериализации строки

>>> list_items = '["a", "b", "c"]'
>>> import json
>>> for item in json.loads(list_items):
...    print(item)
...
a
b
c  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...