首页 文章

如何在django模板中的字典中迭代字典?

提问于
浏览
92

我的字典看起来像这样(字典中的字典):

{'0':{'selected_unit':,'cost':十进制('10 .0000'),'unit__name_abbrev':'u'G','supplier_supplier':u“Steve's Meat Locker”,'price':十进制(' 5.00'),'supplier_address':u'No \ r \ naddress at here','selected_unit_amount':u'2','city_name':u'Joburg,Central','supplier_phone_number':u'02299944444','supplier_website' :无,'supplier_price_list':你'','supplier_email':u'ss.sss @ sssss.com','unit_name':u'Gram','name':u'Rump Bone'}}

现在我只是想在我的模板上显示信息,但我正在努力 . 我的模板代码如下:

{% if landing_dict.ingredients %}
            <hr>
            {% for ingredient in landing_dict.ingredients %}
                {{ ingredient }}
            {% endfor %}
            <a href="/">Print {{ landing_dict.recipe_name }}</a>
        {% else %}
            Please search for an ingredient below
        {% endif %}

它只是在我的模板上显示'0'?

我也尝试过:

{% for ingredient in landing_dict.ingredients %}
                {{ ingredient.cost }}
            {% endfor %}

这甚至不显示结果 .

我想也许我需要深入迭代一级,所以尝试了这个:

{% if landing_dict.ingredients %}
            <hr>
            {% for ingredient in landing_dict.ingredients %}
                {% for field in ingredient %}
                    {{ field }}
                {% endfor %}
            {% endfor %}
            <a href="/">Print {{ landing_dict.recipe_name }}</a>
        {% else %}
            Please search for an ingredient below
        {% endif %}

但这并没有显示任何东西 .

我究竟做错了什么?

1 回答

  • 190

    让我们说你的数据是 -

    data = {'a': [ [1, 2] ], 'b': [ [3, 4] ],'c':[ [5,6]] }

    您可以使用 data.items() 方法获取字典元素 . 注意,在django模板中我们不放 () . 还有一些用户提到 values[0] 不起作用,如果是这种情况,那么试试 values.items .

    <table>
        <tr>
            <td>a</td>
            <td>b</td>
            <td>c</td>
        </tr>
    
        {% for key, values in data.items %}
        <tr>
            <td>{{key}}</td>
            {% for v in values[0] %}
            <td>{{v}}</td>
            {% endfor %}
        </tr>
        {% endfor %}
    </table>
    

    我很确定你可以将这个逻辑扩展到你的特定字典 .


    To iterate over dict keys in a sorted order - 首先我们在python中排序然后在django模板中迭代和渲染 .

    return render_to_response('some_page.html', {'data': sorted(data.items())})

    在模板文件中:

    {% for key, value in data %}
        <tr>
            <td> Key: {{ key }} </td> 
            <td> Value: {{ value }} </td>
        </tr>
    {% endfor %}
    

相关问题