Django - 分页显示
Django - Pagination display
我在确定 Django 的分页时遇到问题。按照文档,如果我在第一页或最后一页,一切正常,但我有代码复制。我尝试过的所有方法最终都会出现某种异常,主要是空页异常。我知道这是因为我的解决方案涉及不检查 page_obj.has_previous 或 .has_next。我不确定如何解决这个问题,我们将不胜感激。我将附上屏幕截图,以便您明白我的意思。
分页:
<div class="pagination justify-content-center pt-3">
<nav aria-label='pagination'>
<ul class="pagination step-links">
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.previous_page_number }}" aria-label='Previous'>
<span aria-hidden='true'>«</span>
</a>
</li>
<li class="page-item">
<a class='page-link'>
{{ page_obj.number }} of {{ page_obj.paginator.num_pages }}
</a>
</li>
{% endif %}
{% if page_obj.has_next %}
<li class="page-item">
<a class='page-link'>
{{ page_obj.number }} of {{ page_obj.paginator.num_pages }}
</a>
</li>
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.next_page_number }}" aria-label='Next'>
<span aria-hidden='true'> » </span>
</a>
</li>
{% endif %}
</ul>
</nav>
</div>
如您所见,“3 个中的 2 个”重复了。我明白为什么它会在我的代码中重复,但如果我删除其中一个列表项,那么 {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}
将不会显示在第一页或最后一页上。解决这个问题的最佳方法是什么?我一直无法自己弄清楚
代码(页面项目class)必须在 if 块之外。这会起作用。
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.previous_page_number }}" aria-label='Previous'>
<span aria-hidden='true'>«</span>
</a>
</li>
{% endif %}
<li class="page-item">
<a class='page-link'>
{{ page_obj.number }} of {{ page_obj.paginator.num_pages }}
</a>
</li>
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.next_page_number }}" aria-label='Next'>
<span aria-hidden='true'> » </span>
</a>
</li>
{% endif %}
我在确定 Django 的分页时遇到问题。按照文档,如果我在第一页或最后一页,一切正常,但我有代码复制。我尝试过的所有方法最终都会出现某种异常,主要是空页异常。我知道这是因为我的解决方案涉及不检查 page_obj.has_previous 或 .has_next。我不确定如何解决这个问题,我们将不胜感激。我将附上屏幕截图,以便您明白我的意思。
分页:
<div class="pagination justify-content-center pt-3">
<nav aria-label='pagination'>
<ul class="pagination step-links">
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.previous_page_number }}" aria-label='Previous'>
<span aria-hidden='true'>«</span>
</a>
</li>
<li class="page-item">
<a class='page-link'>
{{ page_obj.number }} of {{ page_obj.paginator.num_pages }}
</a>
</li>
{% endif %}
{% if page_obj.has_next %}
<li class="page-item">
<a class='page-link'>
{{ page_obj.number }} of {{ page_obj.paginator.num_pages }}
</a>
</li>
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.next_page_number }}" aria-label='Next'>
<span aria-hidden='true'> » </span>
</a>
</li>
{% endif %}
</ul>
</nav>
</div>
如您所见,“3 个中的 2 个”重复了。我明白为什么它会在我的代码中重复,但如果我删除其中一个列表项,那么 {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}
将不会显示在第一页或最后一页上。解决这个问题的最佳方法是什么?我一直无法自己弄清楚
代码(页面项目class)必须在 if 块之外。这会起作用。
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.previous_page_number }}" aria-label='Previous'>
<span aria-hidden='true'>«</span>
</a>
</li>
{% endif %}
<li class="page-item">
<a class='page-link'>
{{ page_obj.number }} of {{ page_obj.paginator.num_pages }}
</a>
</li>
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.next_page_number }}" aria-label='Next'>
<span aria-hidden='true'> » </span>
</a>
</li>
{% endif %}