我有以下形式的字典项
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.html
或data.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'}}
答案 0 :(得分:0)
尝试遍历字典时遇到错误,您的第一个条目不是嵌套字典,因此当您尝试迭代时就好像遇到了错误:
~ λ 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))
从那时起,它将不会尝试将第一个字典条目值视为字典。
答案 1 :(得分:0)
已修复
我如下更改模板中的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 %}
我现在可以轻松访问嵌套词典的值。