【问题标题】:In django, pagination is not working for second page and thereafter ,the objects are not displayed在 django 中,分页不适用于第二页,此后,对象不显示
【发布时间】:2025-11-27 06:50:02
【问题描述】:

当我单击“下一步”时,应该在下一页上显示的对象没有被显示。

但是第一页显示的对象。(即,正确的对象数量)

views.py 中第 5 行的“页面”是什么?

views.py

def search(request):
    context ={}
    search_list = Search.objects.all()
    paginator = Paginator(search_list, 4) # Show 4 contacts per page
    page = request.GET.get('page', 1)
    search = paginator.get_page(page)
    context['search'] = search
return render(request, "main.html", context)

ma​​in.html(模板)

    {% for result in search %}
      <br>
      {{ forloop.counter }}
      <br>
      {{ result.Query }}
      <!-- {{ search.Result.name }} -->
      <br>
      {{ result.json }}
      <br>
      <br>
      {{ result.json.name }}
      <br>
      <br>
      {{ result.json.price }}
      <br>
      <br>
      {{ result.json.author }}
      <br>
   {% endfor %}

            <div class="pagination">
                <span class="step-links">
                    {% if search.has_previous %}
                        <a href="?page=1">&laquo; first</a>
                        <a href="?page={{ search.previous_page_number }}">previous</a>
                    {% endif %}

                    <span class="current">
                        {{ posts.paginator.count }}
                        Page {{ search.number }} of {{ search.paginator.num_pages }}.
                    </span>

                    {% if search.has_next %}
                        <a href="?page={{ search.next_page_number }">next</a>
                        <a href="?page={{ search.paginator.num_pages }}">last &raquo;</a>
                    {% endif %}
                </span>
            </div>

【问题讨论】:

    标签: django pagination


    【解决方案1】:

    而不是:page = request.GET.get('page', 1) 你只需要做page = request.GET.get('page')
    如果request.GET['page'] 不存在或包含非整数值,则下一行的get_page() 方法负责显示第一页。

    看看你的模板:

    <a href="?page={{ search.next_page_number }">next</a> // missing  closing bracket
    <a href="?page={{ search.next_page_number }}">next</a>
    

    【讨论】:

    • 没有 Vaibhav,当我删除 1 时它也不起作用。仍然没有在第二页显示对象,谢谢您的尝试
    • “page”变量值在控制台打印时也返回 None,它不应该返回一个数字吗?
    • 我不明白模板中的 GET 参数是什么意思。它总是返回无
    • 不是这样显示的。那不是显示的 url,显示的 url 带有 csrf 令牌
    • localhost:8000/success/search/search/search/?page={{%20search.next_page_number%20}#search是正在显示的网址