html - django html中的for循环取决于索引(每3次重复)
问题描述
我正在使用 django 应用程序的引导模板
<div class="row">
<div class="col-12">
<div class="card-deck-wrapper">
<div class="card-deck">
{% if posts %}
{% for post in posts %}
<div class="card d-block">
<img class="card-img-top" src="{{ post.image }}" height="200">
<div class="card-body">
<h5 class="card-title">{{ post.title }}</h5>
<p class="card-text">{{ post.description }}</p>
<p class="card-text">
<small class="text-muted">{{ post.creation_date }}</small>
</p>
</div>
</div> <!-- end card-->
{% endfor %}
{% endif %}
</div> <!-- end card-deck-->
</div> <!-- end card-deck-wrapper-->
</div> <!-- end col-->
</div><!-- end row -->
我的主要目标是每个“卡片”只重复3次,否则模板看起来很糟糕,但不知道如何迭代3次,在第4、7、10等时间,创建一个新的“卡片” -deck”以继续发布 4-5-6,然后是另一个“卡片组”用于发布 7-8-9,依此类推
谢谢!
我至少对其进行了一些更改,以了解视图中应该有多少“卡片组”
def blogPost(request):
posts = Post.objects.filter(state=True)
numberOfPosts = len(posts)
addOneDeck = 0
if (numberOfPosts%3) > 0:
addOneDeck = 1
numberOfDecks = ((int(numberOfPosts/3))+addOneDeck)
context = {"posts":posts, "decks":numberOfDecks}
return render(request,"blog.html", context)
解决方案
您是否在模板中寻找 forloop 计数器?django为此内置了
{% for post in posts %}
{{ forloop.counter }} #The current iteration of the loop (1-indexed)
{{ forloop.counter0 }} #The current iteration of the loop (0-indexed)
{% if forloop.counter0|divisibleby:3 %}
<p>print {{ forloop.counter0 }}</p>
{% else %}
<p> do something else</p>
{% endif %}
{% endfor % }}
你可以在 if else 条件下使用。
https://docs.djangoproject.com/en/3.1/ref/templates/builtins/#for
推荐阅读
- c - 在 C 中调用 abort() 时如何指定消息?
- google-bigquery - 使用 gmail 日志和 BQ 审核 SMTP 中继中的条目
- python - 我可以在转换为 dict 时省略的数据类中的可选参数吗?
- python - 预期输入 batch_size (32) 与目标 batch_size (19840) BERT 分类器匹配
- cassandra - Cassandra 环境设置中的 replace_address first_boot 与 replace_address 有什么不同?
- c# - C# 将 Windows 窗体设置在前面但不给它焦点
- javascript - 时刻时区,转换为新时区日期时间
- php - Codeigniter Datatables 服务器端的模棱两可的列
- c# - 2D 播放器移动有问题
- python - Flask 中的全局变量被重新设置为 None