在django中,分页不适用于第二页,此后不显示对象

时间:2018-10-04 05:16:22

标签: django pagination

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

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

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)

main.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>

1 个答案:

答案 0 :(得分:0)

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

查看您的模板:

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