【问题标题】:Django Pagination show no data after clicking on next button单击下一步按钮后,Django Pagination 不显示任何数据
【发布时间】:2022-09-30 18:59:44
【问题描述】:

我在 Django 应用程序中有一个分页。当我加载页面时,第一页上的数据显示很好,但是当我点击分页器的第二个按钮时,下一页上没有显示数据。以下是我的代码:

viwes.py

    def get_queryset(self, **kwargs):
        # get query params
        query = self.request.GET.get(\"q\", \"\")
        page = self.request.GET.get(\"page\", \"1\")
        size = self.request.GET.get(\"rows\", \"15\")
        cname = self.request.GET.getlist(\"cname\", [])
        tags = self.request.GET.getlist(\"tag\", [])
        filter_param = self.request.GET.getlist(\"filter_param\", [])
        # get size and set to default 15 if its not digit
        if size.isdigit():
            size = int(size)
        else:
            size = 15

        # get response from elastic search
        response = self.get_archives(query,  page, size, cname, tags, filter_param)
        response = list(iter(response))
        for res in response:
            if \'statement\' in res:
                ref = self.get_reference(res[\'statement\'], response)
                res[\'references\'] = ref
        p = Paginator(response, 2)
        pages = p.get_page(page)  

        return pages

响应列表被传递到前端,响应在发送到第一页时有数据,但是当单击第二个按钮后再次发送请求时,响应列表被传递到前端是空的。

声明.html

<div class=\"row\" style=\"padding-top: 30px;\">
            {%if archives.paginator.count %}
            <div class=\"col\" style=\"float: right;\">
                <nav aria-label=\"Page navigation\">
                    <ul class=\"pagination\">
                        {% if archives.has_previous %}
                        <li class=\"page-item\">
                            <a class=\"page-link\" href=\"?page=1&q={{query}}&size={{size}}&cname={{cname}}\"
                                aria-label=\"Previous\">
                                <span aria-hidden=\"true\">&laquo;</span>
                                <span class=\"sr-only\">begin</span>
                            </a>
                        </li> {% endif %}

                        {% for n in archives.paginator.page_range %}
                        {% if archives.number == n %}
                        <li class=\"page-item active\">
                            <span class=\"page-link\">{{ n }}<span class=\"sr-only\">(current)</span></span>
                        </li>
                        {% elif n > archives.number|add:\'-3\' and n < archives.number|add:\'3\' %}
                        <li class=\"page-item\"><a class=\"page-link\"
                                href=\"?page={{ n }}&q={{query}}&size={{size}}&cname={{cname}}\">{{ n }}</a></li>
                        {% endif %}
                        {% endfor %}

                        {% if archives.has_next %}
                        <li class=\"page-item\">
                            <a class=\"page-link\"
                                href=\"?page={{ archives.paginator.num_pages }}&q={{query}}&size={{size}}&cname={{cname}}\"
                                aria-label=\"Next\">
                                <span aria-hidden=\"true\">&raquo;</span>
                                <span class=\"sr-only\">end</span>
                            </a>
                        </li>
                        {% endif %} </ul>
                </nav>
            </div>
            {%else%}
            <h6 class=\"light-grey\">No Results Found</h6>
            {%endif%}
            <div class=\"col\">
                <div class=\"float-right\">
                    Showing results {{ archives.start_index }} to {{ archives.end_index }} of
                    {{ archives.paginator.count }}
                </div>
            </div>
        </div>
  • 当您单击页面按钮时,您是否在获取请求中看到页面参数?这是对的吗?
  • 是的,我可以看到正确的页面参数。
  • 在这一行pages = p.get_page(page) 我认为返回值是页面对象,你应该使用 pages = p.get_page(page).object_list
  • 是的,这一行 \"pages = p.get_page(page)\" 有页面对象我试过这个 \"pages = p.get_page(page).object_list\" 但现在分页器没有显示在前端。

标签: django


【解决方案1】:

{{ request.get_full_path }} 附加到下一个和上一个按钮的开头

老的

?page=1&q={{query}}&size={{size}}&cname={{cname}}

新的

{{ request.get_full_path }}&page=1&q={{query}}&size={{size}}&cname={{cname}}

为我工作。

【讨论】:

    猜你喜欢
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    相关资源
    最近更新 更多