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

Posted

技术标签:

【中文标题】我可以访问 Django 模板列表中第一个对象的属性吗?【英文标题】:Can I access attributes of the first object in a list in Django templates? 【发布时间】:2011-04-19 06:56:14 【问题描述】:

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

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

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

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

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

【问题讨论】:

【参考方案1】:

您可以使用with-templatetag:

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

我更喜欢这个,因为browsers.0.classified_name也可以做到【参考方案3】:

或者,如果您使用% for % 标签循环遍历列表,您可以使用the forloop.first variable 忽略除第一个对象之外的每个对象,例如

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

不过,这可能不太清楚,效率也较低。

【讨论】:

以上是关于我可以访问 Django 模板列表中第一个对象的属性吗?的主要内容,如果未能解决你的问题,请参考以下文章

django的模板语言

Django框架 之 模板语言

模板中的 Django 外键

Django将对象列表传递给模板

django 模板通过 forloop.counter 访问列表项

django模板:过滤后的点