【问题标题】:How to break down a Django query-set in a template and then iterate? [duplicate]如何分解模板中的 Django 查询集然后迭代? [复制]
【发布时间】:2016-06-23 23:42:08
【问题描述】:

假设我的视图如下所示:

def index(request):
    posts = Post.objects.all()
    return render(request, 'myapp/index.html', {'posts' : posts})

我想做这样的事情:

index.html

<div>
    {% for post in posts[:3] %}
        <p>{{post.text}}</p>
    {% endfor %}
</div>

<div>
    {% for post in posts[3:6] %}
        <p>{{post.text}}</p>
    {% endfor %}
</div>

简而言之,我想将我的查询集分解为 3 个更小的组,然后对它们进行迭代。有什么简单的方法可以做到这一点?

【问题讨论】:

  • 我不确定这种类型的切片在模板中是否有效。您将需要使用slice 过滤器。

标签: django django-templates django-template-filters


【解决方案1】:

您可以使用forloop.counterdivisibleby 来完成此操作:

<div>
    {% for post in posts %}
        <p>{{post.text}}</p>
        {% if forloop.counter|divisibleby:3 %}
            </div><div>
        {% endfor %}
    {% endfor %}
</div>

或者,考虑在视图中将查询集拆分为组,并将这些组作为新的上下文变量传递给模板。

【讨论】:

    猜你喜欢
    • 2019-02-05
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    • 2017-02-24
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    相关资源
    最近更新 更多