use*_*681 5 django django-models django-views django-pagination
我想使用 django 分页。第一页能够加载产品,但最后一页不显示它们。
\n\n这是我的索引视图:
\n\ndef 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)\nRun 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>\nRun Code Online (Sandbox Code Playgroud)\n\n我的数据库中有 2 个产品,我可以显示第一页,但最后一页没有显示,这里是回溯:
\n\nTraceback (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\'))\nRun Code Online (Sandbox Code Playgroud)\n\n第一页没有错误,但最后一页总是有错误。
\n您正在检查,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)
| 归档时间: |
|
| 查看次数: |
4750 次 |
| 最近记录: |