2010-09-30 136 views
3

我有一个Django模板接收上下文变量browsers中的对象列表。我可以访问Django模板列表中第一个对象的属性吗?

我要选择列表中的第一个对象,其属性的访问之一,像这样:

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

不过,我得到相关的属性选择.classified_name语法错误。

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

回答

8

可以使用with-templatetag

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

@ lazerscience的答案是正确的。另一种方法是直接使用索引。对于例如

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

我更喜欢这个,因为'browsers.0.classified_name'也可以完成 – ratskin 2018-03-06 16:02:16

4

或者,如果你通过使用列表中的{% for %}标签循环,您可以忽略每一个对象除了第一个使用the forloop.first variable,例如

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

虽然这可能不太明确,效率也不高。

相关问题