Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么可以';在Django中,不要用数字来引用字典_Python_Django_Loops_Templates_For Loop - Fatal编程技术网

Python 为什么可以';在Django中,不要用数字来引用字典

Python 为什么可以';在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

我试图用一个使用循环创建的字典呈现一个页面,当我试图在模板(.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 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循环中也没有解释