我可以在Django模板中访问列表中第一个对象的属性吗?

时间:2010-09-30 10:36:32

标签: django django-templates

我有一个Django模板,它接收上下文变量browsers中的对象列表。

我想选择列表中的第一个对象,并访问其中一个属性,如下所示:

<a class="{{ browsers|first.classified_name }}" href="">{{ browsers|first }}</a>

但是,我收到与属性选择.classified_name相关的语法错误。

有没有办法可以选择列表中第一个对象的属性?

3 个答案:

答案 0 :(得分:10)

您可以使用with-templatetag

{% with browsers|first as first_browser %}
    {{ first_browser.classified_name }}
{% endwith %}

答案 1 :(得分:5)

@ lazerscience的回答是正确的。另一种实现此目的的方法是直接使用索引。对于例如

{% with browsers.0 as first_browser %}
    <a class="{{ first_browser.classified_name }}" href="">{{ first_browser }}</a>
{% endwith %}

答案 2 :(得分:4)

或者,如果您使用{% for %}标记循环浏览列表,则可以使用the forloop.first variable忽略第一个对象,例如

{% for browser in browsers %}
    {% if forloop.first %}
        <a class="{{ browser.classified_name }}" href="">{{ browser }}</a>
    {% endif %}
{% endfor %}

尽管如此,这可能既不那么清晰也不那么有效。