Django 模板列表的第一个元素

Posted

技术标签:

【中文标题】Django 模板列表的第一个元素【英文标题】:Django Templates First element of a List 【发布时间】:2011-05-16 05:55:59 【问题描述】:

我将字典传递给我的 Django 模板,

字典和模板是这样的 -

lists[listid] = 'name': l.listname, 'docs': l.userdocs.order_by('-id')

% for k, v in lists.items %
    <ul><li>Count:  v.docs.count , First:  v.docs|first </li></ul>
% endfor %

现在docsuserdocs 类型的列表。即是一个实例。所以first 过滤器返回给我这个实例。我需要从中提取它的id。我该怎么做?

我试过了 v.docs|first .id 和其他各种徒劳的试验。

【问题讨论】:

【参考方案1】:

你可以试试这个:

 v.docs.0 

点赞arr.0

您可以通过索引(012 等)获取元素。

【讨论】:

感谢您的一般回答。我需要第一个和第二个;)【参考方案2】:

您可以使用% with % 模板标签来处理这类事情。

% with v.docs|first as first_doc % first_doc.id % endwith %

【讨论】:

四处乱窜并找到了替代品,告诉我这是不是不好的做法 - v.movies.0.doc.id 【参考方案3】:

不知道有没有用。。

您想要的是可迭代对象 (v.docs) 的第一个值,并且您正在迭代另一个封装可迭代对象 (列表)。

对于计数,我也会这样做,但对于第一个元素.. 我会单独遍历 v.docs 并通过检索第一个值 一个内循环。

% for doc in v.docs %
    % if v.docs | first %  
    <li>doc</li>
    % endif %
% endfor %

注意:第一个过滤器应用于 v.docs ,而不是 doc。 是的。它涉及另一个循环:(

【讨论】:

您必须将v.docs | first 更改为v.docs|first,因为您收到此错误:Could not parse the remainder: '|' from '|'

以上是关于Django 模板列表的第一个元素的主要内容,如果未能解决你的问题,请参考以下文章

django如何访问错误消息列表中的第一个错误

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

编写你的第一个 Django 应用程序,第4部分

在一个 django 表单元素上覆盖数据验证

想在 django 模板中显示姓氏的第一个字符

Django模板中的备用行着色具有多个行集