django中的forloop

2020年09月08日 未雨晴空 0评论 1182阅读 0喜欢

最近开发影院时遇到一个问题就是将查询到视频queryset分成两两一个小列表嵌套在里面
功能简单描述就是将[1,2,3,4,5,6]变成[[1,2],[3,4],[5,6]],因为我模板渲染时需要这样的数据结构便于数据结构化呈现。
上面实现代码如下:

a=[1,2,3,4,5,6]
sep=2
print([ a[i:i+sep] for i in range(0,len(a),sep)]):

现在数据是有了,利用django的模板开始渲染,模板内容如下:

{% for video in videos %}{# 遍历大列表 #}
    
{% for item in video %} {# 遍历小列表 #}
{{ item.name }}
{{ item.director }}
{{ item.remark }}
{% endfor %}
{% endfor %}

{% if forloop.last %}pt-30{% endif %}是由于这两个div一上一下,中间需要隔开空间。一开始还不知道怎么办,后面想起来还有一个forloop好工具,刚好小列表符合这种情况,完美解决我class动态添加的问题。
下面就介绍一下forloop的用法

方法名 解释
forloop.counter 从1开始叠加
forloop.counter0 从0开始叠加
forloop.first 如果是第一次循环时为True
forloop.last 如果是最后一次循环时为True
forloop.parentloop 在嵌套的循环中, 引用父级循环的forloop对象
forloop.revcounter 表示循环中剩余的元素数量。第一次循环时, 值是序列里面元素的个数。最后一次循环时的值为1
forloop.revcounter0 同上类似,不过索引是基于零的。第一次循环时值是序列中元素数量减去1。最后一次循环时的值为0

其实有时候django已经为我们提供了很多便捷的模板函数,只是我们不熟悉,导致重复造轮子

发表评论 取消回复

电子邮件地址不会被公开。

请输入以http或https开头的URL,格式如:https://oneisall.top