Джинджа и вложенный дикт - PullRequest
       1

Джинджа и вложенный дикт

0 голосов
/ 20 февраля 2020

I sh для печати таблицы в формате html с Flask (jinja) из вложенного слова:

Python part:

@app.route("/")

def index():

#the nested dict exemple:
    dict_temp = {0: {'symbol': 'NFLX', 'name': 'Netflix', 'share': '6', 'price': '123', 'total':
''}, 1: {'symbol': 'NFLX', 'name': 'Netflix', 'share': '6', 'price': '123', 'total': ''}, 2: {'symbol': 'NFLX', 'name': 'Netflix', 'share': '6', 'price': '123', 'total': ''}}

    parent_dict = dict_temp

    return render_template("test.html", parent_dict = parent_dict)

Jinja шаблон с таблицей:

 <table style="width:100%">

  <tr>
    <th>Symbol</th>
    <th>Name</th>
    <th>Shares</th>
    <th>Price</th>
    <th>Total</th>
  </tr>

    {% for dict_item in parent_dict %}
    <tr>
        {% for key, value in dict_item.items() %}
            <td>{{value}}</td>
        {% endfor %}
    </tr>
    {% endfor %}

</table>

Код работает с этим python:

parent_dict = [{'A':'item1 A','B':'item1 B'},{'a':'item2 A','b':'Item2 B', 'c':'Item2 C'}]

Как я могу l oop с дзиндзя и вложенным диктом этого типа: { 1: {'A': 'item1 A', 'B': 'item1 B'}, 2: {'a': 'item2 A', 'b': 'Item2 B', 'c': ' Item2 C '}, ...}

Или, может быть, я должен построить свой ввод по-другому?

Заранее спасибо,

1 Ответ

0 голосов
/ 20 февраля 2020

Есть способы перебора вложенного dict в python, но я не думаю, что это можно сделать в шаблонах в flask.

. Как вы и предлагали, вы можете использовать список dict метод, как вы показали выше.

Например

{1:{'A':'item1 A','B':'item1 B'}, 2:{'a':'item2 A','b':'Item2 B', 'c':'Item2 C'}, ... }

становится

[{'A':'item1 A','B':'item1 B'}, {'a':'item2 A','b':'Item2 B', 'c':'Item2 C'}, ... ]

Итерация по шаблону:

    {% for dict_item in list %}
       {% for key, value in dict_item.items() %}
          <h1>Key: {{key}}</h1>
          <h2>Value: {{value}}</h2>
       {% endfor %}
    {% endfor %}

Вы можете сделать следующее, чтобы преобразовать dict of dict в список dict

list_of_dics = [value for value in dic_of_dics.values()].

См. здесь

...