提问者:小点点

Django分页不显示指向其他页面链接的链接


我正在跟随一本django的书来学习django.我尝试在不同的网站上实现分页,它工作了。但是它在我的FYP中不工作。每个页面有3个我指定的对象,但是改变页面的链接没有出现。

我的视图。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'

我的模板:

            {% 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 %}

我的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个对象,但是没有显示更改页码的链接。


共1个答案

匿名用户

不需要为分页创建单独的页面,您可以使用您的模板页面也相同。 我也遇到过同样问题,为此我参考了许多解决方案,其中一个对我有效,这里是我在项目中使用的分页代码

{% 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