簡體   English   中英

Django:無法訪問嵌套在另一個詞典中的詞典中的值

[英]Django : Unable to access values from a dictionary nested inside another dictionary

我有以下形式的字典項目

data = {0:'Karthik',
    1:{'semester':1,'marks':100,'result':'pass','html':'HTML DATA HERE'},
    2:{'semester':2,'marks':98,'result':'pass','html':'HTML DATA HERE'},
    3:{'semester':3,'marks':99,'result':'pass','html':'HTML DATA HERE'}}

我將上述數據傳遞給模板,如下所示:

def showAvailableNonCBCSResults(request,usn):
    data = {0:'Karthik',
        1:{'semester':8,'marks':100,'result':'pass','html':'HTML DATA HERE'},
        2:{'semester':8,'marks':100,'result':'pass','html':'HTML DATA HERE'},
        3:{'semester':8,'marks':100,'result':'pass','html':'HTML DATA HERE'}}
    return render(request,'result/showresult.html',{'data':data,'dictentries':range(0,len(data))})

模板代碼如下:

{% for i in dictentries %}
     <table class="table table-responsive table-striped table-hover pt-3" style="margin:auto;">
     {{ data.i.html }}
     </table>
{% endfor %}

字典的html字段中的數據未打印。 如果我使用data.1.htmldata.2.html ,它工作正常,我可以看到html數據。 但是,在for循環內使用data.i.html不會打印任何內容。

我要去哪里錯了?

編輯1:我在第0個索引處制作了第一個字典,其格式與其他條目相同。 模板輸出仍然沒有變化。

data = {1:{'semester':0,'marks':100,'result':'pass','html':'HTML DATA HERE'},
        1:{'semester':1,'marks':100,'result':'pass','html':'HTML DATA HERE'},
        2:{'semester':2,'marks':98,'result':'pass','html':'HTML DATA HERE'},
        3:{'semester':3,'marks':99,'result':'pass','html':'HTML DATA HERE'}}

嘗試迭代字典時遇到錯誤,您的第一個條目不是嵌套字典,因此當您嘗試迭代時就好像遇到了錯誤:

~ λ python3
Python 3.7.0 (default, Jun 29 2018, 20:13:13)
[Clang 9.1.0 (clang-902.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> testDict = {0:"Name",1:{"nested":"dict1"},2:{"nested2":"dict"}}
>>> for k,v in testDict.items():
...     print(k,v)
...
0 Name
1 {'nested': 'dict1'}
2 {'nested2': 'dict'}
>>> for k,v in testDict.items():
...     for k2,v2 in v.items():
...             print(k2,v2)
...
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
AttributeError: 'str' object has no attribute 'items'

這基本上是說您正在嘗試將字符串視為字典,這自然是行不通的。 您可能會擺脫改變

'dictentries':range(0,len(data))

'dictentries':range(1,len(data))

從那時起,它將不再嘗試將第一個字典條目值視為字典。

固定

我如下更改模板中的for循環:

{% for k,v in data.items %}
     <table class="table table-responsive table-striped table-hover pt-3" style="margin:auto;">
     {{ v.html }}
     </table>
{% endfor %}

現在,我可以輕松訪問嵌套字典的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM