Saya memiliki kamus berikut.

parent_dict= {
     "AAA": 19, 
     "BBB": 74861149, 
     "CCC": "84%", 
     "ABC": {
          "Types": {
               "A1": 25
          }
     }, 
     "DEF": {
          "Average": 279, 
          "Types": {
               "B1": 12, 
               "B2": 1500, 
               "B3": 9000
          }, 
          "Total": 46248438
     }
} 

Saya ingin mengulangi kamus bersarang ini di halaman html. Kamus ini dikirim melalui render_template di flask python.

Saya telah menggunakan python dan labu untuk membuat titik akhir dan mengirimkan ini ke halaman HTML saya.

app.py

@app.route('/sendData',methods=['GET','POST'])
def sendData():
return render_template('demo.html', parent_dict=parent_dict)

demo.html

{% for key,parent_dict_item in parent_dict.items() %}
{% for key2, nested_value in parent_dict_item.items() %}
<p>{{ parent_dict_item }}</p>
{% endfor %}
{% endfor %}

Saya mendapatkan kesalahan ini ketika saya menjalankan URL di chrome.

jinja2.exceptions.UndefinedError UndefinedError: 'int object' tidak memiliki atribut 'items'

Bagaimana saya bisa menyelesaikan masalah ini?

1
Kaverappa KU 25 Oktober 2019, 09:35

2 jawaban

Jawaban Terbaik

Tambahkan kondisi if untuk memeriksa jenis 'parent_dict_item'. Loop bersarang hanya akan berfungsi jika parent_dict_item bertipe 'dict':

{% for key,parent_dict_item in parent_dict.items() %}
    {% if type(parent_dict_item).__name__ == 'dict' %}
        {% for key2, nested_value in parent_dict_item.items() %}
            <p>{{ parent_dict_item }}</p>
        {% endfor %}
    {% endif %}
{% endfor %}
0
Shivendra Pratap Kushwaha 25 Oktober 2019, 08:56

Loop for bersarang Anda mengasumsikan bahwa setiap entri level kedua juga merupakan dict, tetapi ini tidak terjadi, itu rusak pada item pertama:

{% for key,parent_dict_item in parent_dict.items() %}

# key = "AAA", parent_dict_item = 19

{% for key2, nested_value in parent_dict_item.items() %}

# This breaks, because parent_dict_item is 19 (an int) so you can't call int.items().

<p>{{ parent_dict_item }}</p>
{% endfor %}
{% endfor %}

Anda harus menambahkan logika kondisional yang menentukan apa yang ingin Anda lakukan jika parent_dict_item bukan dict.

1
seymourgoestohollywood 25 Oktober 2019, 06:54