如何访问 Jinja2 中列表的一部分
我正在尝试使用 jinja2 模板语言返回我的帖子列表中的最后 n 个(比如说 5)个帖子:
{% for recent in site.posts|reverse|slice(5) %}
{% for post in recent %}
<li> <a href="/{{ post.url }}">{{ post.title }}</a></li>
{% endfor %}
{% endfor %}
不过,这会返回整个列表。如何删除前 n 个或后 n 个元素?
I'm trying to use the jinja2 templating langauge to return the last n(say, 5) posts in my posts list:
{% for recent in site.posts|reverse|slice(5) %}
{% for post in recent %}
<li> <a href="/{{ post.url }}">{{ post.title }}</a></li>
{% endfor %}
{% endfor %}
This is returning the whole list though. How do you strip the first or last n elements?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
我也有同样的问题。这是一个简单的答案。这将检索 site.posts 中的最后五个项目:
I had the same problem too. It's a simple answer. This retrieves the last five items in site.posts:
我认为不使用 slice 过滤器会更简单:
另一种方法是使用 循环控制扩展:
this is a bit simpler I think without the use of the slice filter:
another way is to use the loop controls extension:
我想出了以下代码:
batch(n)
过滤器将列表xs
拆分为长度n
的子列表,然后第一个
过滤器选择这些子列表中的第一个。I came up with the following code:
The
batch(n)
filter splits a listxs
into sublists of lengthn
, then thefirst
filter selects the first of these sublists.尝试使用下标表示法,就像在普通 Python 中一样。例如,要获取最后 5 个帖子并以相反的顺序显示它们:
会生成:
u'76
54
3
'
Try subscript notation, as in normal Python. For example, to take the last 5 posts and display them in reverse order:
produces:
u'76<br>54<br>3<br>'
对我来说,以下简单的代码可以工作,并且不需要整个 jinja 过滤器链。只需使用列表过滤器转换为列表,然后进行正常的数组切片(注意括号):
我遇到了同样的问题,但我的数据是序列而不是列表,并且此代码可以处理两者。
For me, the following simple code works and doesn't require the whole chain of jinja filters. Simply use the list filter to convert to list and then do normal array slicing (note the parantheses):
I had the same problem, but my data was in a sequence rather than a list and this code handles both.
@Andrey的回答有正确的想法。但是,要完全解决您的问题:
或者:
您使用哪一种取决于您的喜好。
@Andrey's answer has the right idea. However, to fully solve your question:
Alternatively:
Whichever one you use depends on your preferences.
[-5:]
- 最后 5 篇文章[::-1]
- 倒序[-5:]
- last 5 posts[::-1]
- reverse order要获取最后一个元素,请从数组列表中获取总索引。
例如,您的对象名称是
foundappointmentlog
。To get the last element, get total index from the array list.
For example, your object name is
foundappointmentlog
.