【问题标题】:django paginate the original search resultdjango对原始搜索结果进行分页
【发布时间】: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 %}

【问题讨论】:

    标签: django forms pagination


    【解决方案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 %}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-13
      • 1970-01-01
      • 1970-01-01
      • 2021-05-22
      • 1970-01-01
      • 2015-04-05
      • 2012-12-01
      相关资源
      最近更新 更多