• Ошибки во время пагинации Django?

    @dimuska139
    Backend developer
    def product_list(request, category_slug=None):
        category = None
        categories = Category.objects.all()
        products = Product.objects.filter(available=True)
        page = request.GET.get('page')
        
        if category_slug:
            category = get_object_or_404(Category, slug=category_slug)
            products = products.filter(category=category)
        
        paginator = Paginator(products, 3)
    
    
        try:
            products = paginator.page(page)
        except PageNotAnInteger:
            products = paginator.page(1)
        except EmptyPage:
            products = paginator.page(paginator.num_pages)
    
        return render(request,
                    'products/list.html',
                    {'category': category,
                    'categories': categories,
                    'page': page,
                    'products': products})
    Ответ написан
    Комментировать
  • Почему не работает пагинация Django?

    vitaldmit
    @vitaldmit
    Веб программист
    Попробуй так.
    def news(request):
        # 'Новости'
        all_news = News.objects.filter(type='news').filter(visible=True).order_by('-publish')
        paginator = Paginator(all_news, 10)
        page = request.GET.get('page')
        try:
            all_news = paginator.page(page)
        except PageNotAnInteger:
            # Если страница не является целым числом,возвращаем первую страницу.
            all_news = paginator.page(1)
        except EmptyPage:
            # Если номер страницы больше, чем общее количество страниц,
            # возвращаем последнюю.
            all_news = paginator.page(paginator.num_pages)
        return render(request, 'news.html',
                      {'page': page,
                       'all_news': all_news,})
    Ответ написан
  • Почему не работает пагинация?

    vitaldmit
    @vitaldmit
    Веб программист
    Попробуй так
    def news(request):
        # 'Новости'
        all_news = News.objects.filter(type='news').filter(visible=True).order_by('-publish')
        paginator = Paginator(all_news, 10)
        page = request.GET.get('page')
        try:
            all_news = paginator.page(page)
        except PageNotAnInteger:
            # Если страница не является целым числом,возвращаем первую страницу.
            all_news = paginator.page(1)
        except EmptyPage:
            # Если номер страницы больше, чем общее количество страниц,
            # возвращаем последнюю.
            all_news = paginator.page(paginator.num_pages)
        return render(request, 'news.html',
                      {'page': page,
                       'all_news': all_news,})
    Ответ написан
    Комментировать
  • Почему отображается только один элемент в строке?

    @Asokr
    Добавлю в ответ...

    У вас цикл {% for product in products %} повторяет
    <div class="col-md-8">
          <div class="col-md-8 products">


    А должен только продукт
    <div class="col-sm-4">
           <div class="product">


    Вот ваш код:
    <div class="container content">
      <div class="row">
        <div class="col-md-4">
          <div class="list-group">
            <a href="{% url 'products:productsList' %}"
              class="list-group-item {% if not category %}selected{% endif %}">Все</a>
            {% for c in categories %}
            <a href="{{ c.get_absolute_url }}"
              class="list-group-item {% if category.id == c.id %}selected{% endif %}">{{ c.name }}</a>
            {% endfor %}
          </div>
        </div>>
        <div class="col-md-8 products">
          <div class="row">
             {% for product in products %}
            <div class="col-sm-4">
              <div class="product">
                <div class="product-img">
                <img src="{% if product.image %}{{ product.image.url }}{% else %}{% endif %}" alt="">
                </div>
                <p class="product-title">
                  <a href="{{ product.get_absolute_url }}">{{ product.title }}</a>
                </p>
                <p class="product-price">{{ product.price }} руб.</p>
              </div>
            </div>
              {% endfor %}
          </div>
        </div>
      </div>
    </div>
    Ответ написан
    Комментировать