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 %
现在docs
是userdocs
类型的列表。即是一个实例。所以first
过滤器返回给我这个实例。我需要从中提取它的id
。我该怎么做?
我试过了
v.docs|first .id
和其他各种徒劳的试验。
【问题讨论】:
【参考方案1】:你可以试试这个:
v.docs.0
点赞arr.0
您可以通过索引(0
、1
、2
等)获取元素。
【讨论】:
感谢您的一般回答。我需要第一个和第二个;)【参考方案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 模板列表的第一个元素的主要内容,如果未能解决你的问题,请参考以下文章