как отобразить избранные товары на слайде - PullRequest
1 голос
/ 15 марта 2019

Я хочу отобразить свои избранные продукты на одном слайде. Но этот код отображает три разных слайда. Как я могу сделать это возможным

base.html

{% 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 %}

views.py

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})

Ответы [ 3 ]

0 голосов
/ 15 марта 2019

просто отредактируйте html как показано ниже

<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 голосов
/ 15 марта 2019

Вы перебираете весь div, поэтому он выдает результат примерно так, попробуйте вставить приведенный ниже код и посмотрите, как он выглядит.

  <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 голосов
/ 15 марта 2019

Вы создаете 3 разных слайда, потому что ваш цикл находится в неправильном месте. Вы должны изменить, как это.

  <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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...