【发布时间】: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\">«</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\">»</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