【问题标题】:Django. How to make loop for bootstrap collapse姜戈。如何为引导崩溃制作循环
【发布时间】:2020-11-22 20:18:30
【问题描述】:

您能否提供更好的方法来处理页面的许多类似引导折叠?

我有12个类似的折叠,其中折叠标题是模型字段的详细名称,折叠文本是模型字段值。

<div class="col-md-12 col-lg-10 mx-auto mb-3">
  <div class="accordion md-accordion" id="accordionEx" role="tablist" aria-multiselectable="true">
    <div class="card border-top border-bottom-0 border-left border-right border-light">
      <div class="card-header border-bottom border-light" role="tab" id="heading" style="background-color:#DDDFDF;">
        <a data-toggle="collapse" data-parent="#accordionEx" href="#collapse" aria-expanded="true" aria-controls="collapse">
          <h5 class="black-text font-weight-normal mb-0">
            Title of collapse where i want get verbose_name of model
          </h5>
        </a>
      </div>
      <div id="collapse" class="collapse" role="tabpanel" aria-labelledby="heading" data-parent="#accordionEx">
        <div class="card-body">
          Some text where i want get value of model field
        </div>
      </div>
    </div>
  </div>
</div>

如何为这个模型创建循环并从模型字段中替换名称和值,而不是创建 12 个类似的代码块?

【问题讨论】:

    标签: python django django-models bootstrap-4


    【解决方案1】:

    你可以像这样使用内置的 django 模板标签

    {% for field in model %}
        <div class="col-md-12 col-lg-10 mx-auto mb-3">
      <div class="accordion md-accordion" id="accordionEx" role="tablist" aria-multiselectable="true">
        <div class="card border-top border-bottom-0 border-left border-right border-light">
          <div class="card-header border-bottom border-light" role="tab" id="heading" style="background-color:#DDDFDF;">
            <a data-toggle="collapse" data-parent="#accordionEx" href="#collapse" aria-expanded="true" aria-controls="collapse">
              <h5 class="black-text font-weight-normal mb-0">
                {{ field.name }}
              </h5>
            </a>
          </div>
          <div id="collapse" class="collapse" role="tabpanel" aria-labelledby="heading" data-parent="#accordionEx">
            <div class="card-body">
              {{ field.text }}
            </div>
          </div>
        </div>
      </div>
    </div>
    {% endfor %}    
    
    

    注意:确保你正确缩进我刚刚复制了你的答案。

    您还必须从应用程序的views.py 文件中将上下文传递给您的模板,以便循环访问它。

    你可以阅读更多关于 django 内置标签Here

    【讨论】:

    • 这不是我想要的)例如我有一个产品模型,我想对字段进行循环并显示每个字段名称和文本,但不要手动指定它们
    • 所以,假设您有一个产品模型,其中包含名称、描述、价格等字段。然后你可以在你的views.py文件中创建一个字典,比如 context= { 'product' : product=product.object.all() } 并将它传递给模板,比如 return render(request, 'template_name', context=context)然后在模板中,您将能够访问您的产品模型的所有字段,例如 {{ products.name }} 然后只需将它放在任何您想要的循环中,如上所示。
    • 因此,在每个字段的模板中,我需要为要显示的模型中的每个字段指定 {{ products.name }}、{{ products.descriptions }}、{{ products.price }} ?
    • 是的,假设您的数据库中有 3 个产品,那么将有三个 Bootstrap 折叠,每个产品一个
    • 我知道如何使用 django 内置标签。这正是我想要避免的。如何循环遍历模型中的名称和数据,并将它们输出折叠以免重复它们
    猜你喜欢
    • 2021-08-06
    • 1970-01-01
    • 2020-08-17
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 2014-03-11
    相关资源
    最近更新 更多