在django模板中呈现具有列表格式值的字典

时间:2013-09-02 16:04:02

标签: django django-forms django-templates

我有词典格式:

uri_dict :{
"152.2.3.4" : ["/v1/draft" , 2],
"172.31.13.12" : ["/v1/url" , 34]
}

我想在表格格式中的django模板中呈现这个:

{% for keys, value in url_dict.items %}
                      <tr border = 1px black> 
                        <th>{{ keys }}</th>
                        <td> {{ value[0] }} </td>      <!--requires value[0]  but not working -->
                        <td>{{ value[1]}} </td>   <!--not working -->
                        </tr>
                        {% endfor %} 

请给我任何解决方案---如何在模板中迭代列表值? 如何迭代列表值

3 个答案:

答案 0 :(得分:2)

有几个选择:

<td>{{ value.0 }}</td>
<td>{{ value.1 }}</td>

{% for item in value %}
    <td>{{ item }}</td>
{% endfor}

我的评论(以及其后的其他答案)涵盖了这两个问题。对于长度为2的列表,您还可以:

<td>{{ value|first }}</td>
<td>{{ value|last }}</td>

答案 1 :(得分:1)

要访问django模板上的数组元素,必须将它们称为elem.attribute。

在您的情况下,value.0和value.1。

{% for keys, value in url_dict.items %}
<tr border = 1px black> 
    <th>{{ keys }}</th>
    <td>{{ value.0 }}</td>   <!--requires value[0]  but not working -->
    <td>{{ value.1 }}</td>   <!--not working -->
</tr>
{% endfor %} 

此页面可以为您提供帮助:How to access array elements in a Django template?

希望这有帮助,

答案 2 :(得分:1)

如果你在字典的每个值上只有两个项目,即列表,那么

{% for keys, value in url_dict.items %}
     <tr border = 1px black> 
         <th>{{ keys }}</th>
             <td> {{value.0}}</td>
             <td> {{value.1}}</td>
     </tr>
{% endfor %} 

如果列表中可以有任意数量的项目,则只需为每个项目循环:

{% for keys, value in url_dict.items %}
     <tr border = 1px black> 
         <th>{{ keys }}</th>
         {% for eachval in value %}
             <td> {{ eachval}}</td>
         {% endfor %}
     </tr>
{% endfor %}