Пагинатор не отображается на главной странице

Когда я открываю главную страницу, пагинатор не отображается. И я не могу решить эту проблему.

Я пробовал эти коды, но не смог решить эту проблему. Пожалуйста, помогите мне решить эту проблему

Коды на views.py

from django.core.paginator import Paginator, EmptyPage, InvalidPage



def home(request, c_slug=None):
    c_page = None
    prodt = None
    if c_slug != None:
        c_page = get_object_or_404(Categ, slug=c_slug)
        prodt = Products.objects.filter(category=c_page, available=True)
    else:

        prodt = Products.objects.all().filter(available=True)
    cat = Categ.objects.all()
    paginator = Paginator(prodt, 4)
    try:
        page = int(request.GET.get('page', '1'))
    except:
        page = 1
    try:
        products = paginator.page(page)
    except (EmptyPage, InvalidPage):
        products = paginator.page(paginator.num_pages)

    return render(request, 'index.html', {'ct': cat, 'pr': products})

Коды на Index.html

<div class="row flex px-xl-5">
{% for i in pr.object_list %}

            <div class="col-lg-3 col-md-4 col-sm-6">
                <div class="product-item bg-light mb-4">
                    <div class="product-img position-relative overflow-hidden">
                        <a href="{{i.get_url}}"><img class="img-fluid w-100" src="{{i.img.url}}" alt="" style="height:250px; width:500px;">
                        </a>
                    </div>

                    <div class="text-center py-4">
                        <a class="h6 text-decoration-none text-truncate" href="{{i.get_url}}">{{i.name}}</a>
                        <p>{{i.des|truncatechars:80}}</p>
                        <div class="d-flex align-items-center justify-content-center mt-2">
                            <h5>RS {{i.price}}</h5><h6 class="text-muted ml-2"><del>RS 123.00</del></h6>
                        </div>
                        <p>Stocks left: {{i.stock}}</p>
                        <div class="d-flex align-items-center justify-content-center mb-1">
                            <small class="fa fa-star text-primary mr-1"></small>
                            <small class="fa fa-star text-primary mr-1"></small>
                            <small class="fa fa-star text-primary mr-1"></small>
                            <small class="fa fa-star text-primary mr-1"></small>
                            <small class="fa fa-star text-primary mr-1"></small>
                            <small>(99)</small>
                        </div>
                    </div>
                </div>
            </div>



{% endfor %}
     </div>
        <div class="mx-auto">
            <div class="text-center">
            {% for pg in products.paginator.page_range %}
            <a href="?page={{pg}}" class="btn btn-light btn-sm {% if products.number == pg %} activate {% endif %}">{{pg}}</a>
            {% endfor %}
            </div>
        </div>

    </div>

   

Когда я открываю главную страницу, пагинатор не отображается. И я не могу решить эту проблему.

Я пробовал эти коды, но не смог решить эту проблему. Пожалуйста, помогите мне решить эту проблему

<div class="mx-auto">
            <div class="text-center">
            {% for pg in products.paginator.page_range %}
            <a href="?page={{pg}}" class="btn btn-light btn-sm {% if products.number == pg %} activate {% endif %}">{{pg}}</a>
            {% endfor %}
            </div>
        </div>

Вот коды, которые я ввел после завершения цикла for.

Что мне следует сделать, чтобы исправить эту ошибку?

What’s available to the Template.render() [django-docs] method is Context({'pr': products}) [django-docs] as seen here:

render(request, 'index.html', {'ct': cat, 'pr': products})

Поэтому переменная Context, ссылающаяся на Paginator products, - это pr. Именно эту переменную следует использовать для итерации по Paginator products в вашем шаблоне.

<div class="text-center">
    {% for pg in pr.paginator.page_range %}
        <a href="?page={{pg}}" class="btn btn-light btn-sm {% if pr.number == pg %} activate {% endif %}">{{pg}}</a >
    {% endfor %}
</div>

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

Вернуться на верх