首页 > 解决方案 > 如何在 django 的不同 div 布局中使用一个 for 循环?

问题描述

部分示例

我想在具有不同 div 布局的部分中列出博客文章。如何通过只使用一个 for 循环来做到这一点。
或者有没有其他方法,如果是这样,你能建议怎么做吗?

标签: djangodjango-templates

解决方案


而不是使用 for 循环。一种方法是使用 django 模板标签。

在这个特定场景中使用 for 循环将涉及很多条件来构建模板。

注意:Bootstap 'Grid System' 用于在模板中构建布局。相关信息可在此处找到

模板

<div class="row>
  <div class="col-8">
  {{ posts|get_element_by_index:0 }}
  </div>
  <div class="col-4>
    <div class="row">
    {{ posts|get_element_by_index:1 }}
    </div>
    <div class="row">
    {{ posts|get_element_by_index:2 }}
    </div>
  </div>
</div>
<div class="row">
  <div class="col-4">
  {{ posts|get_element_by_index:3 }}
  </div>
  <div class="col-4">
  {{ posts|get_element_by_index:4 }}
  </div>
  <div class="col-4">
    <div class="row">
    {{ posts|get_element_by_index:5 }}
    </div>
    <div class="row">
    {{ posts|get_element_by_index:6 }}
    </div>
    <div class="row">
    {{ posts|get_element_by_index:7 }}
    </div>
  </div>
</div>

模板标签

from django import template
register = template.Library()

@register.filter
def get_element_by_index(queryset, i):
    try:
        post = queryset[i]
    except:
        post = None
    return post

关于如何设置模板标签的信息可以在这里找到

with如果您想将帖子作为可用变量返回,请查看此处的内置模板


推荐阅读