Python 为什么可以';在Django中,不要用数字来引用字典
我试图用一个使用循环创建的字典呈现一个页面,当我试图在模板(.html)中引用它时,它正在打印该键值的数字 view.pyPython 为什么可以';在Django中,不要用数字来引用字典,python,django,loops,templates,for-loop,Python,Django,Loops,Templates,For Loop,我试图用一个使用循环创建的字典呈现一个页面,当我试图在模板(.html)中引用它时,它正在打印该键值的数字 view.py dicti={} key = range(len(OPTIONS)) # a tuple for i in key: dicti[i] = polls_model.objects.filter(options=i).count() dicti.update({'len_of_key' : key}) print(dicti) return rende
dicti={}
key = range(len(OPTIONS)) # a tuple
for i in key:
dicti[i] = polls_model.objects.filter(options=i).count()
dicti.update({'len_of_key' : key})
print(dicti)
return render(request,'polls/thanks.html', dicti)
这张照片
{0:1,1:1,2:0,3:0,'len_of_key':范围(0,4)}
谢谢
<div class="row">
{% for i in len_of_key %}
<div class="column">
<div class="card">
<h3>
{{ i }}
</h3>
</div>
</div>
{% endfor %}
</div>
{u key%}的len\u中的i的%
{{i}
{%endfor%}
当它运行时,我的输出中有1,2,3,4
如果您能提供一些帮助,我们将不胜感激。请尝试:
return render(request,'polls/thanks.html', {'dicti': dicti})
{% for key, value in dicti.items %}
<div class="column">
<div class="card">
<h3>
{{ value }}
</h3>
</div>
</div>
{% endfor %}
返回呈现(请求,'polls/thanky.html',{'dict':dict})
{关键字为%,dict.items%中的值为}
{{value}}
{%endfor%}
你的问题让我有点难以理解。从我得到的是,你想返回一个选项存在多少次
首先,做range(len(OPTIONS))
你最好和我一起去
for i, key in enumerate(OPTIONS):
dicti[i] = polls_model.objects.filter(options=i).count()
但我怀疑你是否真的需要根据你的价值指数来过滤你的民意调查。因此,您可能需要将.filter(options=i)
更改为.filter(options=key)
接下来,对于从模型返回的值,不应该在字典中为它们创建单独的键。如果订单很重要的话,肯定不会
最好在存储结果的位置创建一个键,这也意味着枚举已过时:
dicti = {}
dicti['polls'] = []
for key in OPTIONS:
dict['polls'].append(polls_model.objects.filter(options=key).count())
return render(request, 'polls/thanks.html', dicti)
最后,在模板中,您的代码看起来还不错,但您应该循环使用我们刚刚创建的键:
<div class="row">
{% for poll in polls %}
<div class="column">
<div class="card">
<h3>
{{ poll }}
</h3>
</div>
</div>
{% endfor %}
</div>
{%用于轮询中的轮询%}
{{poll}}
{%endfor%}
这将返回模板中的轮询计数。如果您需要在某处显示轮询的长度,可以使用{{polls | length}}
。像这样在Django模板中迭代字典
<div class="row">
{% for i, j in dicti.items %}
<div class="column">
<div class="card">
<h3>
{{ j }}
</h3>
</div>
</div>
{% endfor %}
</div>
{dict.items%中i,j的百分比}
{{j}
{%endfor%}
是否要在模板中呈现键或值?我希望模板中的值以逻辑方式呈现,0,1,2,3,len_of_key是键,1,1,0,0,range(0,4)是值,因此我尝试通过它们的键引用这些值,因此在模板中使用“I”。但是它只打印了0,1,2,3当我在dict['polls']中将key替换为'I'时,这个解决方案起了作用。append(polls_model.objects.filter(options=key.count())@Pradeep我在回答中没有提到它,但是如果你计划用大量数据运行它,你应该使用它来避免过多地查询数据库hanks@ghyllebert,我将在运行复杂的数据库操作时使用它,但是这个演示应用程序以这个简单的查询结束。由于某些原因,这不起作用,甚至在循环内部也没有解释,因为这必须起作用。您只是没有如第一行所示更改render
语句。在您的代码中,没有上下文变量dict
。出于某种原因,这不起作用,甚至在for循环中也没有解释