django对原始搜索结果进行分页

Posted

技术标签:

【中文标题】django对原始搜索结果进行分页【英文标题】:django paginate the original search result 【发布时间】:2013-05-04 22:48:00 【问题描述】:

我使用 ListView 来显示搜索结果,并使用表单让用户输入搜索值,问题是:当我得到一些搜索结果时,比如 50 个项目,我将 item_per_page 设置为 30,所以我有两个页面,但是现在当我单击下一页链接时,它忘记了以前的搜索请求并显示了第 2 页中的所有项目,如何解决这个问题?我的代码如下:

我的表单域是这样的:

<form method="get" action="% url 'query_student' %">
      #the form fields
</form>       

我的分页模板:

% if is_paginated %
        <div class="pages">
                % if page_obj.has_previous %
                        <a href="/student/querystudent?page= page_obj.previous_page_number ">previous</a>
                % endif %
                <span class="btnon">
                        page  page_obj.number   total  page_obj.paginator.num_pages  
                </span>
                % if page_obj.has_next %
                        <a href="/student/querystudent?page= page_obj.next_page_number ">>next</a>
                % endif %
        </div>
% endif %

【问题讨论】:

【参考方案1】:

您缺少包含所有表单数据的查询字符串

最简单的解决方案是使用django-url-tools,然后在上一页/下一页的链接中添加:

% load urls %

...

% add_params request.get_full_path page=page_obj.previous_page_number %

...

% add_params request.get_full_path page=page_obj.next_page_number %

【讨论】:

以上是关于django对原始搜索结果进行分页的主要内容,如果未能解决你的问题,请参考以下文章

带有查询分页的 Django 搜索页面

在Django REST List API视图中对原始SQL查询进行分页的最佳方法是什么?

Django restframwork实现自定义数据格式的分页与搜索

关闭 Django Rest Framework ModelViewSet 的自动分页

django 中的分页 - 原始查询字符串丢失

Django如何对dicts列表进行分页