我正在使用一个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 -->Mi的主要目标是每张“卡片”只重复3次,否则模板看起来很糟糕,但不知道如何只迭代3次,在第4、7、10等时间,创建一个新的“卡片”以继续发布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)发布于 2021-03-30 05:22:43
你正在寻找模板中的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 conditions then内使用。
https://docs.djangoproject.com/en/3.1/ref/templates/builtins/#for
https://stackoverflow.com/questions/66861110
复制相似问题