Django пагинация не показывает ссылки на другие ссылки страницы - PullRequest
0 голосов
/ 19 июня 2020
• 1000 страницы изменений не отображаются.

My views.py:-

from django.shortcuts import render
from .models import song_thumb
from django.core.paginator import Paginator,EmptyPage,PageNotAnInteger
from django.views.generic import ListView
# Create your views here.

class SongListView(ListView):
    model=song_thumb
    context_object_name='artists'
    paginate_by=3
    template_name='home.html'

my template:

            {% block content %}
<form class="" action="mediaplayer.html" method="get">


            <div class="data-content">
              {% for artist in artists %}
              <div class="container">





                <div id="img-1" class="tabcontent">
                    <div class="blog-content">

                      <div class="row">
                        <div class="col-sm">


                        <div class="card" style="width: 18rem;">
                        <div class="img">
                            <img  class="img-thumbnail" src="{{ artist.img.url }}" alt="">
                        </div>

                        <div class="card-body">
                            <div class="title">
                            <p>{% trans 'Artist:' %} {{artist.artist}} </p><br>
                            <p>{% trans 'Title:' %} {{artist.song_title}}</p><br>
                            <p>{% trans 'Album:' %} {{artist.album}}</p><br>
                            <p>{% trans 'Duration' %} {{artist.song_duration}}</p><br>
                       </div>

                            <audio controls>

                              <source src='{{ artist.song.url }}' type="audio/mpeg">
                              Your browser does not support the audio element.
                            </audio>
                          </div>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>












{% endfor %}
</div>


</form>
  {% include "pagination.html" with page=page_obj %}

{% endblock %}

my pagination. html:

<div class="pagination">
  <span class="step-links">
    {% if page.has_previous %}
      <a href="?page={{ page.previous_page_number }}">Previous</a>
    {% endif %}
    <span class="current">
      Page {{ page.number }} of {{ page.paginator.num_pages }}.
    </span>
    {% if page.has_next %}
      <a href="?page={{ page.next_page_number }}">Next</a>
    {% endif %}
  </span>
</div>

На каждой странице указано по 3 объекта, но ссылки для изменения номеров страниц не отображаются.

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Измените код разбивки на страницы следующим образом:

<!-- Pagination -->
    {% if is_paginated %}
      <ul class="pagination justify-content-center mb-4">
          {% if page_obj.has_previous %}
            <li class="page-item">
              <a class='page-link' href='?page=1'>First</a>
            </li>
            <li class="page-item">
              <a class='page-link' href='?page={{ page_obj.previous_page_number }}'>&laquo;</a>
            </li>
          {% endif %}
          {% for num in page_obj.paginator.page_range %}
              {% if page_obj.number == num %}
              <li class="page-item disabled">
                  <a class='page-link' href='?page={{ num }}'>{{ num }}</a>
              </li>
              {% elif num > page_obj.number|add:'-3' and num < page_obj.number|add:'3' %}
              <li class="page-item">
                  <a class='page-link' href='?page={{ num }}'>{{ num }}</a>
              </li>
              {% endif %}
          {% endfor %}
          {% if page_obj.has_next %}
              <li class="page-item">
              <a class='page-link' href='?page={{ page_obj.next_page_number }}'>&raquo;</a>
              </li>
              <li class="page-item">
              <a class='page-link' href='?page={{ page_obj.paginator.num_pages }}'>Last</a>
              </li>
          {% endif %}
      </ul>
    {% endif %} 
0 голосов
/ 19 июня 2020

Нет необходимости создавать отдельную страницу для разбивки на страницы, вы также можете использовать свой шаблон страницы. У меня была такая же проблема, и для этого я сослался на множество решений, и это сработало для меня вот код разбивки на страницы, который я использовал в своем проекте

{% if is_paginated %}

      {% if page_obj.has_previous %}
        <a class="btn btn-outline-info mb-4" href="?page=1">First</a>
        <a class="btn btn-outline-info 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-info 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-info mb-4" href="?page={{ num }}">{{ num }}</a>
        {% endif %}
      {% endfor %}

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

    {% endif %}

Вот лучший учебник по разбивке на страницы, я надеюсь, что это поможет вам

https://www.youtube.com/watch?v=acOktTcTVEQ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...