如何在 django 模板中获取 for 循环内的列表的下一个元素?

Posted

技术标签:

【中文标题】如何在 django 模板中获取 for 循环内的列表的下一个元素?【英文标题】:how to get to the next element of list inside for loop in django template? 【发布时间】:2020-10-23 06:01:08 【问题描述】:

我有一个类似的列表

lst = [
       ['img1','img2','img3','img4','img5'], 
       ['img6','img7','img8','img9']
      ]

还有一个类似的模板

<div class="row">                               -- 1st row
   <div class="col-lg-3" data-aos="fade-up">    --col-lg-3
      <a href="img1">  --img1
        <img src="img1">                    -- img1
      </a>
   </div>

   <div class="col-lg-6" data-aos="fade-up" data-aos-delay="100">    --col-lg-6
       <a href="img2">   --img2
          <img src="img2">                    --img2
       </a>
   </div>
   <div class="col-lg-3" data-aos="fade-up" data-aos-delay="200">    --col-lg-3
        <a href="img">   --img3
           <img src="img">                    --img3
       </a>
   </div>
</div>

<div class="row">                                 ---2nd row

   <div class="col-lg-8" data-aos="fade-up" data-aos-delay="100">    --col-lg-8
       <a href="img2">   --img2
          <img src="img2">                    --img2
       </a>
   </div>
   <div class="col-lg-4" data-aos="fade-up" data-aos-delay="200">    --col-lg-4
        <a href="img">   --img3
           <img src="img">                    --img3
       </a>
   </div>
</div>

请注意几点:

    每个 col-lg 大小都有不同的大小 一列的每个and标签包含1个img

我想以不同的方式迭代整个模板

例如:我可以在 python 中执行此操作,我可以迭代列表并分配值

for data in lst:
  it = iter(data)

  print (next(it))    ---where print will be replaced with img tag 
  print (next(it))  
  print (next(it))
  print (next(it))
  print (next(it))

但是我如何在 django 模板中做到这一点

【问题讨论】:

【参考方案1】:

Django 的for-in template 循环为数据中的每个项目构建模板标记循环之间定义的DOM。

话虽如此,您可以像这样调整您的解决方案:

<div class="row align-items-stretch">
                     
% for img in data %
                     
   <div class="col-6 col-md-6 col-lg-3" data-aos="fade-up">
      <a href=" data.img " class="d-block photo-item" data-fancybox="gallery">  
        <img src=" data.img.url "  class="img-fluid">                    
        <div class="photo-text-more">
           <span class="icon icon-camera"></span>
        </div>
      </a>
   </div>
                     
% endfor %

</div>

如果data 包含三个项目/图像,输出将类似于:

<div class="row align-items-stretch">
                     
   # 1st iteration   
               
   <div class="col-6 col-md-6 col-lg-3" data-aos="fade-up">
      <a href="href_according_to_data" class="d-block photo-item" data-fancybox="gallery">  
        <img src="link"  class="img-fluid">                    
        <div class="photo-text-more">
           <span class="icon icon-camera"></span>
        </div>
      </a>
   </div>


   # 2nd iteration

   <div class="col-6 col-md-6 col-lg-3" data-aos="fade-up">
      <a href="href_according_to_data" class="d-block photo-item" data-fancybox="gallery">  
        <img src="link"  class="img-fluid">                    
        <div class="photo-text-more">
           <span class="icon icon-camera"></span>
        </div>
      </a>
   </div>


   # 3rd iteration

   <div class="col-6 col-md-6 col-lg-3" data-aos="fade-up">
      <a href="href_according_to_data" class="d-block photo-item" data-fancybox="gallery">  
        <img src="link"  class="img-fluid">                    
        <div class="photo-text-more">
           <span class="icon icon-camera"></span>
        </div>
      </a>
   </div>

</div>

【讨论】:

谢谢。但这不是我想要的。我想我没有很好地解释它。我会再试一次。

以上是关于如何在 django 模板中获取 for 循环内的列表的下一个元素?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 django 模板中的 for 循环中获取特定的 id?

html 如何从django模板引擎html文件中的'for'循环获取ewry N元素

来自 % for % 的 Django 模板变量循环到 Javascript

如何在 django 模板中从 for 循环中转义一行

如何在 Django 模板语言中正确构建 for 循环

如何在Django模板的内部for循环中使用外部for循环值