1
votes

comment afficher les produits phares dans une diapositive

Je souhaite afficher mes produits phares dans une seule diapositive, mais ce code affiche trois diapositives différentes. Comment puis-je rendre cela possible

base.html

def homepage(request):
    categories = Category.objects.filter(active=True)
    products = list(Product.objects.filter(active=True).order_by('-created'))
    featured_products = Product.objects.filter(featured=True)
    return render(request,'shop/base.html',{'categories':categories,'product':products,'featured_products':featured_products})

vues.py

{% for product in featured_products %}
      <div class="col-lg-9">
        <div id="carouselExampleIndicators" class="carousel slide my-4" data-ride="carousel">
          <ol class="carousel-indicators">
            <li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li>
            <li data-target="#carouselExampleIndicators" data-slide-to="1"></li>
            <li data-target="#carouselExampleIndicators" data-slide-to="2"></li>
          </ol>
          <div class="carousel-inner" role="listbox">
            <div class="carousel-item active">
              <img class="d-block img-fluid" src="/media/{{product.image}}" alt="First slide">
            </div>
            <div class="carousel-item">
              <img class="d-block img-fluid" src="/media/{{product.image}}" alt="Second slide">
            </div>
            <div class="carousel-item">
              <img class="d-block img-fluid" src="/media/{{product.image}}" alt="Third slide">
            </div>
          </div>
          <a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
            <span class="carousel-control-prev-icon" aria-hidden="true"></span>
            <span class="sr-only">Previous</span>
          </a>
          <a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
            <span class="carousel-control-next-icon" aria-hidden="true"></span>
            <span class="sr-only">Next</span>
          </a>
        </div>
{% endfor %}


2 commentaires

vous voulez dire que vous voulez qu'un seul curseur avec les images puisse être glissé?


Chaque fois que vous parcourez la boucle, un produit s'affiche 3 fois, une fois dans chaque diapositive. Déplacez simplement votre boucle for à l'intérieur de "carrousel-inside" pour ne contenir qu'un seul div "carrousel-item".


3 Réponses :


0
votes

Vous créez 3 diapositives différentes parce que votre boucle for est mal placée. Vous devriez changer pour aimer ça.

  <div class="col-lg-9">
    <div id="carouselExampleIndicators" class="carousel slide my-4" data-ride="carousel">
      <ol class="carousel-indicators">
   {% for product in featured_products %}
        <li data-target="#carouselExampleIndicators" data-slide-to="{{forloop.counter}}" class="active"></li>
   {% endfor %}
      </ol>
      <div class="carousel-inner" role="listbox">
   {% for product in featured_products %}
{% if forloop.first %}  
           <div class="carousel-item active">
    {% else %}
            <div class="carousel-item">
{% endif %}
          <img class="d-block img-fluid" src="/media/{{product.image}}" alt="First slide">
        </div>
{% endfor %}
      </div>
      <a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
        <span class="carousel-control-prev-icon" aria-hidden="true"></span>
        <span class="sr-only">Previous</span>
      </a>
      <a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
        <span class="carousel-control-next-icon" aria-hidden="true"></span>
        <span class="sr-only">Next</span>
      </a>
    </div>


0 commentaires

0
votes

modifiez simplement le code HTML comme ci-dessous

<div class="col-lg-9">
    <div id="carouselExampleIndicators" class="carousel slide my-4" data-ride="carousel">
      <ol class="carousel-indicators">
       {% for product in featured_products %}
        <li data-target="#carouselExampleIndicators" data-slide-to="{{ forloop.counter }}" {% if forloop.counter == 1 %}class="active"{% endif %}></li>
       {% endfor %}
      </ol>
      <div class="carousel-inner" role="listbox">
     {% for product in featured_products %}
        <div class="carousel-item {%if forloop.counter == 1 %}active{%endif%}">
          <img class="d-block img-fluid" src="/media/{{product.image}}" alt="First slide">
        </div>
      {% endfor %}
      </div>
      <a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
        <span class="carousel-control-prev-icon" aria-hidden="true"></span>
        <span class="sr-only">Previous</span>
      </a>
      <a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
        <span class="carousel-control-next-icon" aria-hidden="true"></span>
        <span class="sr-only">Next</span>
      </a>
    </div>


0 commentaires

0
votes

Vous faites une boucle sur tout le div, donc il vous donne la sortie comme ça, essayez de coller le code ci-dessous et voyez à quoi il ressemble.

  <div class="col-lg-9">
    <div id="carouselExampleIndicators" class="carousel slide my-4" data-ride="carousel">
      <ol class="carousel-indicators">
        {% for product in featured_products %}
        <li data-target="#carouselExampleIndicators" data-slide-to="{{ forloop.counter }}" {% if forloop.counter == 1 %}class="active"{% endif %}></li>
        {% endfor %}
      </ol>
      <div class="carousel-inner" role="listbox">
        {% for product in featured_products %}
        <div class="carousel-item active">
          <img class="d-block img-fluid" src="/media/{{product.image}}" alt="First slide">
        </div>
        {% endfor %}
      </div>
      <a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
        <span class="carousel-control-prev-icon" aria-hidden="true"></span>
        <span class="sr-only">Previous</span>
      </a>
      <a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
        <span class="carousel-control-next-icon" aria-hidden="true"></span>
        <span class="sr-only">Next</span>
      </a>
    </div>


0 commentaires