Как вставить пагинацию блога в Django Блог - PullRequest
0 голосов
/ 06 мая 2020
  • Я пытаюсь реализовать разбиение на страницы в своем блоге, используя Bootstrap.
  • Я прокомментировал, потому что этот способ работает, но показывает только одно число.
  • Я пробовал другой способ, но пока не работает, мне кажется, что он близок. или не. : -)
  • После моего файла "blog. html".
  • Спасибо.

            <nav aria-label="Page navigation example">
            <ul class="pagination pagination-lg justify-content-center">
            {% if queryset.has_previous %}
                <li class="page-item">
                <a class="page-link" href="?{{ page_request_var }}={{ queryset.previous_page_number }}" aria-label="Previous">
                    <span aria-hidden="true">&laquo;</span>
                </a>
                </li>
            {% endif%}  

                {% comment %} <li class="page-item"><a class="page-link" href="?{{ page_request_var }}">{{ queryset.previous_page_number}}</a></li> {% endcomment %}
                <li class="page-item"><a class="page-link" href="?{{ page_request_var }}">{{ queryset.number }}</a></li>
                {% comment %} <li class="page-item"><a class="page-link" href="?{{ page_request_var }}">{{ queryset.next_page_number}}</a></li> {% endcomment %}

            {% if queryset.has_next %}
                <li class="page-item">
                <a class="page-link" href="?{{ page_request_var }}={{ queryset.next_page_number }}" aria-label="Next">
                    <span aria-hidden="true">&raquo;</span>
                </a>
                </li>
            {% endif%}    
            </ul>
            </nav>

Ответы [ 2 ]

1 голос
/ 06 мая 2020

Я полагаю, вы сделали две вещи. Сначала вы использовали Paginator в своем views.py, а также ваш набор запросов не пуст. Следующий код полностью функционален и предназначен только для вашего шаблона:

paginator.html

<div class="pagination-container justify-content-center">
    <ul class="pagination pagination-primary">
        {% if paginator.has_previous %}
          <li class="page-item arrow-margin-left">
            <a class="page-link" href="?page={{ paginator.previous_page_number }}" aria-label="Previous">
              <span aria-hidden="true"><i class="fa fa-angle-double-left" aria-hidden="true"></i></span>
            </a>
          </li>
        {% else %}
            <li class="page-item arrow-margin-left">
                <a class="page-link" href="#" aria-label="Previous">
                    <span aria-hidden="true"><i class="fa fa-angle-double-left" aria-hidden="true"></i></span>
                </a>
            </li>
        {% endif %}
      {% for i in paginator.paginator.page_range %}
        {% if paginator.number == i %}
          <li class="page-item active">
                <a class="page-link">{{ i }}</a>
          </li>
        {% else %}
          <li class="page-item">
              <a class="page-link" href="?page={{ i }}">
                  {{ i }}
              </a>
          </li>
        {% endif %}
      {% endfor %}
        {% if paginator.has_next %}
            <li class="page-item arrow-margin-right">
                <a class="page-link" href="?page={{ paginator.next_page_number }}" aria-label="Next">
                    <span aria-hidden="true">
                        <i class="fa fa-angle-double-right" aria-hidden="true"></i>
                    </span>
                </a>
            </li>
        {% else %}
            <li class="page-item arrow-margin-right">
                <a class="page-link" href="#" aria-label="Next">
                    <span aria-hidden="true">
                        <i class="fa fa-angle-double-right" aria-hidden="true"></i>
                    </span>
                </a>
            </li>
        {% endif %}
    </ul>
</div>

Теперь вы можете вызывать этот код везде, где вам нужно, например:

articles.html

<div class="pagination-container justify-content-center col-md-6">
    {% include 'pages/page_articles_paginator.html' with paginator=page_articles%}
</div>

это присвоит page_articles

1 голос
/ 06 мая 2020

Добавьте пагинацию в файл html следующим образом:

<ul class="pagination justify-content-center">
      {% if is_paginated %}

        {% if page_obj.has_previous %}
          <a class="btn btn-outline-dark mb-4" href="?page=1">First</a>
          <a class="btn btn-outline-dark mb-4" href="?page={{ page_obj.previous_page_number }}">Previous</a>
        {% endif %}

        {% for num in page_obj.paginator.page_range %}
          {% if page_obj.number == num %}
            <a class="btn btn-dark mb-4" href="?page={{ num }}">{{ num }}</a>
          {% elif num > page_obj.number|add:'-3' and num < page_obj.number|add:'3' %}
            <a class="btn btn-outline-dark mb-4" href="?page={{ num }}">{{ num }}</a>
          {% endif %}
        {% endfor %}

        {% if page_obj.has_next %}
          <a class="btn btn-outline-dark mb-4" href="?page={{ page_obj.next_page_number }}">Next</a>
          <a class="btn btn-outline-dark mb-4" href="?page={{ page_obj.paginator.num_pages }}">Last</a>
        {% endif %}

      {% endif %}
    </ul>
...