Django Пагинация - как уменьшить количество отображаемых ссылок? - PullRequest
0 голосов
/ 08 мая 2020

Я хотел бы отображать << 1 2 3 4... 11 12 >> вместо << 1 2 3 4 5 6 7 8 9 10 11 12>> на моем Django сайте и с использованием разбивки на страницы.

Вот что я получаю сейчас:

Current preview

Мой html код:

<div class="row">
    <div class="col-md-12">
      {% if jokes.has_other_pages %}
      <ul class="pagination">
         {% if jokes.has_previous %}
           <li class="page-item">
             <a href="?page={{jokes.previous_page_number}}" class="page-link">&laquo;</a>
           </li>
         {% else %}  
          <li class="page-item disabled">
            <a class="page-link">&laquo;</a>
          </li>
         {% endif %}
         {% for i in jokes.paginator.page_range %}
          {% if jokes.number == i %}
            <li class="page-item active">
             <a class="page-link">{{i}}</a>
            </li>
          {% else %}
           <li class="page-item">
             <a href="?page={{i}}" class="page-link">{{i}}</a>
           </li>
          {% endif %}
         {% endfor %}
         {% if jokes.has_next %}
         <li class="page-item">
           <a href="?page={{jokes.next_page_number}}" class="page-link">&raquo;</a>
         </li>
       {% else %}  
        <li class="page-item disabled">
          <a class="page-link">&raquo;</a>
        </li>
       {% endif %}
      </ul>
      {% endif %}
    </div>

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 08 мая 2020

вы можете использовать это так

        {% if jokes.has_previous %}
            <a href="?page=1">first</a>
            <a href="?page={{ jokes.previous_page_number }}">{{ jokes.previous_page_number }}</a>
        {% endif %}

        <span class="current">
             {{ jokes.number }} 
        </span>

        {% if jokes.has_next %}
            <a href="?page={{ jokes.next_page_number }}">{{ jokes.next_page_number }}</a>
            <a href="?page={{ jokes.paginator.num_pages }}">last </a>
        {% endif %}

это будет выглядеть так:

первая 4 5 6 последняя

4 предыдущая страница 5 - текущая страница 6 - следующая страница

0 голосов
/ 08 мая 2020

Вот пример flask, который должен дать вам хорошую отправную точку:

<div style="margin:25px 20% 100px 20%;">
{% for page_num in posts.iter_pages(left_edge=1, right_edge=1, left_current=1, right_current=2) %}
  {% if page_num %}
    {% if posts.page == page_num %}
      <a class="btn btn-info mb-4" href=" {{ url_for('myposts', page=page_num) }}">{{ page_num }}</a>   
    {% else %}
      <a class="btn btn-outline-info mb-4" href=" {{ url_for('myposts', page=page_num) }}">{{ page_num }}</a>
    {% endif %}
   {% else %}
        ...
   {% endif %}
{% endfor %}
</div>
...