django 分页“该页面不包含结果”

use*_*681 5 django django-models django-views django-pagination

我想使用 django 分页。第一页能够加载产品,但最后一页不显示它们。

\n\n

这是我的索引视图:

\n\n
def index(request):\n\n    categories = Category.objects.filter(parent_category=None)\n\n    product_list = Product.objects.filter(is_deleted=False).order_by(\'created_at\')\n    paginator = Paginator(product_list, 1) # Show 25 contacts per page\n    page = request.GET.get("page",1)\n\n    try:\n        products = paginator.page(page)\n    except PageNotAnInteger:\n        products = paginator.page(1)\n    except EmptyPage:\n        products = paginator.page(1)\n\n    context = {\n        \'products\': products,\n        \'categories\': categories\n    }\n    return render(request, \'product/urunler.html\', context)\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是我的模板:

\n\n
<div class="blog-pagination">\n    <ul class="flat-pagination style1">\n        {% if products.has_previous %}\n            <li class="prev">\n                <a href="?page={{products.previous_page_number}}" title="">\n                    <img src="{% static \'images/icons/left-1.png\' %}" alt="">\xc3\x96nceki Sayfa\n                </a>\n            </li>\n        {% else %}\n            <li class="prev">\n                <a href="#" title="">\n                    <img src="{% static \'images/icons/left-1.png\' %}" alt="">\xc3\x96nceki Sayfa\n                </a>\n            </li>\n        {% endif %}\n        {% for i in products.paginator.page_range %}\n            {% if products.number == i %}\n                <li class="active">\n                    <a href="?page={{i}}" class="waves-effect" title="">{{i}}</a>\n                </li>\n            {% else %}\n                <li>\n                    <a href="?page={{i}}" class="waves-effect" title="">{{i}}</a>\n                </li>\n            {% endif %}\n        {% endfor %}\n        {% if products.has_previous %}\n            <li class="next">\n                <a href="?page={{products.next_page_number}}" title="">\n                    Sonraki Sayfa\n                    <img src="{% static \'images/icons/right-1.png\' %}" alt="">\n                </a>\n            </li>\n        {% else %}\n        {% if products.has_next %}\n            <li class="next">\n                    <a href="" title="">\n                        Sonraki Sayfa\n                        <img src="{% static \'images/icons/right-1.png\' %}" alt="">\n                    </a>\n            </li>\n        {% endif %}                                                           \n        {% endif %}                           \n    </ul>\n    <div class="clearfix"></div>\n</div>\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的数据库中有 2 个产品,我可以显示第一页,但最后一页没有显示,这里是回溯:

\n\n
Traceback (most recent call last):\necommerce_1            |   File "/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py", line 41, in inner\necommerce_1            |     response = get_response(request)\necommerce_1            |   File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 187, in _get_response\necommerce_1            |     response = self.process_exception_by_middleware(e, request)\necommerce_1            |   File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 185, in _get_response\necommerce_1            |     response = wrapped_callback(request, *callback_args, **callback_kwargs)\necommerce_1            |   File "/ecommerce/Product/views.py", line 22, in index\necommerce_1            |     return render(request, \'product/urunler.html\', context)\necommerce_1            |   File "/usr/local/lib/python3.6/site-packages/django/shortcuts.py", line 30, in render\necommerce_1            |     content = loader.render_to_string(template_name, context, request, using=using)\necommerce_1            |   File "/usr/local/lib/python3.6/site-packages/django/template/loader.py", line 68, in render_to_string\necommerce_1            |     return template.render(context, request)\necommerce_1            |   File "/usr/local/lib/python3.6/site-packages/django/template/backends/django.py", line 66, in render\necommerce_1            |     return self.template.render(context)\necommerce_1            |   File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 207, in render\necommerce_1            |     return self._render(context)\necommerce_1            |   File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 199, in _render\necommerce_1            |     return self.nodelist.render(context)\necommerce_1            |   File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 990, in render\necommerce_1            |     bit = node.render_annotated(context)\necommerce_1            |   File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 957, in render_annotated\necommerce_1            |     return self.render(context)\necommerce_1            |   File "/usr/local/lib/python3.6/site-packages/django/template/loader_tags.py", line 177, in render\necommerce_1            |     return compiled_parent._render(context)\necommerce_1            |   File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 199, in _render\necommerce_1            |     return self.nodelist.render(context)\necommerce_1            |   File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 990, in render\necommerce_1            |     bit = node.render_annotated(context)\necommerce_1            |   File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 957, in render_annotated\necommerce_1            |     return self.render(context)\necommerce_1            |   File "/usr/local/lib/python3.6/site-packages/django/template/loader_tags.py", line 72, in render\necommerce_1            |     result = block.nodelist.render(context)\necommerce_1            |   File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 990, in render\necommerce_1            |     bit = node.render_annotated(context)\necommerce_1            |   File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 957, in render_annotated\necommerce_1            |     return self.render(context)\necommerce_1            |   File "/usr/local/lib/python3.6/site-packages/django/template/defaulttags.py", line 322, in render\necommerce_1            |     return nodelist.render(context)\necommerce_1            |   File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 990, in render\necommerce_1            |     bit = node.render_annotated(context)\necommerce_1            |   File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 957, in render_annotated\necommerce_1            |     return self.render(context)\necommerce_1            |   File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 1040, in render\necommerce_1            |     output = self.filter_expression.resolve(context)\necommerce_1            |   File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 708, in resolve\necommerce_1            |     obj = self.var.resolve(context)\necommerce_1            |   File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 849, in resolve\necommerce_1            |     value = self._resolve_lookup(context)\necommerce_1            |   File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 911, in _resolve_lookup\necommerce_1            |     current = current()\necommerce_1            |   File "/usr/local/lib/python3.6/site-packages/django/core/paginator.py", line 158, in next_page_number\necommerce_1            |     return self.paginator.validate_number(self.number + 1)\necommerce_1            |   File "/usr/local/lib/python3.6/site-packages/django/core/paginator.py", line 50, in validate_number\necommerce_1            |     raise EmptyPage(_(\'That page contains no results\'))\n
Run Code Online (Sandbox Code Playgroud)\n\n

第一页没有错误,但最后一页总是有错误。

\n

Ala*_*air 3

您正在检查,has_previous但随后包括next_page_number. 看起来您想改为包含previous_page_number

{% if products.has_previous %}
    <a href="?page={{products.previous_page_number}}" title="">Previous</a>
{% endif %}
Run Code Online (Sandbox Code Playgroud)