django - 使用 for 循环在多列中显示数据
问题描述
我确信这是一个简单的答案,但对于我的生活,我无法弄清楚/找出如何去做。
我想在三个相等的列中显示我的数据库中的博客文章。当我开始查看引导文档时,这是给出的代码。
<div class="container">
<div class="row">
<div class="col-sm">
One of three columns
</div>
<div class="col-sm">
One of three columns
</div>
<div class="col-sm">
One of three columns
</div>
</div>
</div>
但是,如果我去实现它,我不明白如何在不重复所有内容 3 次的情况下将 for 循环放在它上面。IE:
{% for post in posts.all %}
<div class="row">
<div class="col-sm">
<img class="post-image" src="{{ post.image.url }}" />
</div>
<div class="col-sm">
<img class="post-image" src="{{ post.image.url }}" />
</div>
<div class="col-sm">
<img class="post-image" src="{{ post.image.url }}" />
</div>
</div>
{% endfor %}
如果你能指出我如何去做这件事的正确方向,那将非常感谢引导程序不是必需的。
解决方案
视图应该“准备”数据以使其易于枚举。我们可以使用以下方法创建块:
def some_view(request):
posts = list(Post.objects.all())
posts = [posts[i:i+3] for i in range(0, len(posts), 3)]
return render(request, 'some-template.html', {'products': products})
在模板中,我们可以使用双{% for … %}…{% endfor %}
循环 [Django-doc]:
{% for chunk in posts %}
<div class="row">
{% for post in chunk %}
<div class="col-sm">
<img class="post-image" src="{{ post.image.url }}" />
</div>
{% endfor %}
</div>
{% endfor %}
推荐阅读
- .net - F# System.Random 重复值
- c# - 无法使用 Visual Studio 的即时窗口运行 Selenium API
- macos - 无法在 Mac M1 上启动 redis 服务器
- sql-server - 数据库帮助,一个表和多个用户,其中 CRUD 权限取决于使用的列值
- c# - 带有数据表的索引页面在显示搜索框之前大约需要 6-7 秒
- python-3.x - 实施人脸检测时视频流滞后
- android - 将数据从 csv 文件传递到折线图 | 科特林
- google-bigquery - 如何在bigquery中获取主键和外键
- flutter - Flutter 路由后保存页面内容
- esp32 - 是否有支持 WiFi 的 esp32 模拟器?