【问题标题】:How to create a dynamic bootstrap carousel, using flask/python?如何使用flask/python创建动态引导轮播?
【发布时间】:2020-06-07 02:54:04
【问题描述】:

对于上下文: 我正在建立一个社交网络。与 Facebook 一样,每个个人资料都有一个标题为“图片”的选项卡,它是个人资料所有者帖子的缩略图集合。

我的目标: 就像 Facebook 一样,我希望用户浏览页面能够点击任何缩略图,启动引导轮播并在更大的视图中显示该特定图像。然后,用户可以使用 carousel-control 类来滚动浏览配置文件所有者的其他图像。

目前情况: 缩略图显示,您可以单击任何缩略图并启动轮播,但所有个人资料所有者的图像都显示为堆叠,就好像它们都处于活动状态一样。

我正在使用 jinja2 for 循环和 url_for 语句来访问图像。我还在 if 语句中使用循环计数器来使其只有一个图像处于活动状态,但它显然不起作用:(
正是这个 4 岁的 stackoverflow post 我开始尝试解决这个问题。

使用静态添加了几张图片的轮播时,它可以正常工作,但出于显而易见的原因,我需要它是动态的。
我不确定如何只显示被点击的特定图像,并能够滚动浏览其他图像。

任何帮助将不胜感激!

这是我的 HTML

<div id="carouselExampleControls" class="carousel slide" data-ride="carousel">
  <div class="carousel-inner">
    {% for post in user.posts %}
      {% if post.post_img != None %} 
        <div class="container">
          <div class="item {% if loop.counter == 1 %} active {% endif %}" id="slide{{ loop.counter }}">
            <img src="{{ url_for('static', filename='post_pics/' + post.post_img) }}"> 
          </div>
          <a class="carousel-control-prev" href="#pageCarousel" role="button" data-slide="prev">
            <span class="carousel-control-prev-icon bg-primary" aria-hidden="true"></span>
            <span class="sr-only">Previous</span>
          </a>
          <a class="carousel-control-next" href="#pageCarousel" role="button" data-slide="next">
            <span class="carousel-control-next-icon bg-primary" aria-hidden="true"></span>
            <span class="sr-only">Next</span>
         </a>
       </div>
     {% endif %}
   {% endfor %} 
 </div>
</div>

【问题讨论】:

    标签: python html twitter-bootstrap flask jinja2


    【解决方案1】:

    您可以将a 标签移到inner-carousel div 之外,可能如下所示(未经测试)

    如果您查看documentaiona 标签必须在外面。

    <div id="carouselExampleControls" class="carousel slide" data-ride="carousel">
      <div class="carousel-inner">
        {% for post in user.posts %}
          {% if post.post_img != None %} 
    
              <div class="carousel-item {% if loop.index == 1 %} active {% endif %}" id="slide{{ loop.index }}">
                <img src="{{ url_for('static', filename='post_pics/' + post.post_img) }}"> 
              </div>
    
         {% endif %}
       {% endfor %} 
     </div>
      <a class="carousel-control-prev" href="#pageCarousel" role="button" data-slide="prev">
        <span class="carousel-control-prev-icon bg-primary" aria-hidden="true"></span>
        <span class="sr-only">Previous</span>
      </a>
      <a class="carousel-control-next" href="#pageCarousel" role="button" data-slide="next">
        <span class="carousel-control-next-icon bg-primary" aria-hidden="true"></span>
        <span class="sr-only">Next</span>
      </a>
    </div>
    

    【讨论】:

    • 我试过了,不幸的是,轮播中仍然显示每张图片。我不知道怎么做,但必须有办法做到这一点,所以只有点击的图像才会被赋予活动类。现在,循环正在使每个图像都有活动类。
    • 我已经更新了我的答案。尝试使用loop.index 而不是loop.counter
    • 并删除了容器 div。轮播工作后,您可以将其返回。
    • 很有趣,我昨晚也尝试了这些建议,但无济于事。我查看了 Github 上的一些示例,并查看了我在原始问题中发布的其他解决方案,它们似乎有一个共同点,它们不使用 url_for 语句来获取路径,它们只是说{{图片 }} 例如。因此,也许我应该在我的控制器文件中创建一个名为 images 的对象,然后使用 jinja2 语句而不是 url_for。你怎么看?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多