【问题标题】:how to iterate through a dict如何遍历字典
【发布时间】:2015-11-14 01:50:00
【问题描述】:

我想在模板表中显示这条数据

{u'User1': {'annual_spend__sum': None}, u'User2': {'annual_spend__sum': 80}, u'User3': {'annual_spend__sum': 30}, u'User4': {'annual_spend__sum': None}}

我不确定如何循环数据以正确显示它,有人可以帮忙吗?

this_user = User.objects.get(id=3)
    all_users = User.objects.all()
    values = {}
    for this_user in all_users:
        values[this_user.username] = Lead.objects.filter(assign_to=this_user).exclude(lead_status='CV').aggregate(Sum('annual_spend'))
    values.items()


    return render(request, 'index.html', {'annual_spend': values})

更新

def func(request):
    from django.template import context
    this_user = User.objects.get(id=3)
    all_users = User.objects.all()

    values = {}
    for this_user in all_users:
        values[this_user.username] = Lead.objects.filter(assign_to=this_user).exclude(lead_status='CV').aggregate(Sum('annual_spend'))

    context = {}
    annual_spend__sum_list = []
    data = values

    for i in data:
        annual_spend__sum_list.append(data[i]['annual_spend__sum'])

    context['result'] = annual_spend__sum_list

    return render(request, "index.html", context)

模板

<ul>
{% for i in result %}
<li>{{ i }}</li>
{% endfor %}
</ul>

【问题讨论】:

  • 重复只是谷歌上通过搜索“django iterate dict”找到的众多链接之一......
  • @Sayse 我不想粗鲁,但那个话题没有回答我的问题。
  • 那你的问题是什么?据我所知,您希望在模板中迭代字典 (annual_spend)。你尝试过/研究过什么?
  • @Sayse 是的,基本上我想做的是在模板中显示数据,所以它看起来像这样codepad.org/jkenMTTG

标签: python django


【解决方案1】:

就像任何其他字典一样遍历它。

data = {'User1': {'annual_spend__sum': None}, 'User2': {'annual_spend__sum': 80}, 'User3': {'annual_spend__sum': 30}, 'User4': {'annual_spend__sum': None}}

for i in data:
    print i, data[i], data[i]['annual_spend__sum']

这是输出:

>>> data = {'User1': {'annual_spend__sum': None}, 'User2': {'annual_spend__sum': 80}, 'User3': {'annual_spend__sum': 30}, 'User4': {'annual_spend__sum': None}}
>>> 
>>> for i in data:
...     print i, data[i], data[i]['annual_spend__sum']
... 
User4 {'annual_spend__sum': None} None
User2 {'annual_spend__sum': 80} 80
User3 {'annual_spend__sum': 30} 30
User1 {'annual_spend__sum': None} None
>>> 

现在,你可以用它做任何你想做的事了。

我建议你制作一个上下文字典,并在其中放入一个 listannual_spend__sum,然后将其传递给 render

这样做:

def func(request):
    context = {}
    annual_spend__sum_list = []
    data = {'User1': {'annual_spend__sum': None}, 'User2': {'annual_spend__sum': 80}, 'User3': {'annual_spend__sum': 30}, 'User4': {'annual_spend__sum': None}}

    for i in data:
        annual_spend__sum_list.append(data[i]['annual_spend__sum'])

    context['result'] = annual_spend__sum_list

    return render(request, "index.html", context)

现在,在 index.html 中你可以这样打印:

<ul>
    {% for i in result %}
        <li>{{ i }}</li>
    {% endfor %}
</ul>

你可以通过很多不同的方式来做到这一点。这是最基本和最容易解释的。见for循环,我直接引用了key,遍历了结果。

【讨论】:

  • 感谢您的帮助,请问context dict会做什么?
  • 似乎不起作用,但在终端中我得到相同的输出,但是当我尝试在模板上显示它时什么也没有。
  • 那么你在模板中使用它的方式有问题。除非您显示更多代码,否则无法帮助您。
  • 我更新了原来的帖子,看看,这就是我所做的一切。
  • @ohhellothere 在哪里 index.html?
猜你喜欢
  • 2017-01-18
  • 1970-01-01
  • 2018-01-01
  • 2019-09-24
相关资源
最近更新 更多