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'>&laquo;</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'> &raquo; </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'>&laquo;</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'> &raquo; </span>
                    </a>
                </li>
            {% endif %}