获取Django模板中的列表值

时间:2009-09-29 22:39:03

标签: django django-templates

在视图中:

return render_to_response('template.html',
                          {'headers': list(sort_headers.headers()) },
                          context_instance=RequestContext(request))

在模板中:

{{ headers }}
<br />
{{ headers|slice:"1" }}

在浏览器中:

[{'url': '?ot=desc&amp;o=0', 'text': 'Nombre', 'class_attr': ' class="sorted ascending"', 'sortable': True}, {'url': '?ot=asc&amp;o=1', 'text': 'Valor', 'class_attr': '', 'sortable': True}, {'url': '?ot=asc&amp;o=2', 'text': 'Inventario', 'class_attr': '', 'sortable': False}, {'url': '?ot=asc&amp;o=3', 'text': 'Fecha Creacion', 'class_attr': '', 'sortable': True}]

[{'url': '?ot=desc&amp;o=0', 'text': 'Nombre', 'class_attr': ' class="sorted ascending"', 'sortable': True}]

我得到一个带有{{ headers|slice:"1" }}的列表节点,但是现在,如何获得一个dict值?例如,'url'返回'?ot=desc&amp;o=0'

注意:不能使用{% for %}

3 个答案:

答案 0 :(得分:7)

{{headers.1.url}}

来自http://docs.djangoproject.com/en/dev/topics/templates/#variables

Technically, when the template system encounters a dot, it tries the following lookups, in this order:
    * Dictionary lookup
    * Attribute lookup
    * Method call
    * List-index lookup

因此,您可以执行{{headers.1}}而不是{{headers | slice:“1”}}。然后要访问网址密钥,您只需附加它:{{headers.1.url}}。

HTH。

答案 1 :(得分:0)

我不确定我理解你的问题但是要在模板中将值形成为dict,你可以使用方法项或值。

如果您使用 {{dict.items}} ,您将获得元组列表(键,值),您只需使用tuple.1即可获得该值。

如果您使用 {{dict.values}} ,您只需获取字典值的列表。

答案 2 :(得分:-1)

我想你想要:

{% with headers|slice:"1" as data %}
<a href="{{ data.url }}"{{ data.class_attr|safe }}>{{ data.text }}</a>
{% endwith %}