相关疑难解决方法(0)

如何用其他获取变量对Django进行分页?

我在Django中使用分页时遇到问题.以下面的URL为例:

http://127.0.0.1:8000/users/?sort=first_name
Run Code Online (Sandbox Code Playgroud)

在此页面上,我按其first_name对用户列表进行排序.没有排序GET变量,它默认按id排序.

现在,如果我点击下一个链接,我希望以下网址:

http://127.0.0.1:8000/users/?sort=first_name&page=2
Run Code Online (Sandbox Code Playgroud)

相反,我失去了所有得到的变量,最终得到了

http://127.0.0.1:8000/users/?page=2
Run Code Online (Sandbox Code Playgroud)

这是一个问题,因为第二页按id而不是first_name排序.

如果我使用request.get_full_path,我最终会得到一个丑陋的URL:

http://127.0.0.1:8000/users/?sort=first_name&page=2&page=3&page=4
Run Code Online (Sandbox Code Playgroud)

解决办法是什么?有没有办法访问模板上的GET变量并替换页面的值?

我正在使用Django文档中描述的分页,我的偏好是继续使用它.我使用的模板代码与此类似:

{% if contacts.has_next %}
    <a href="?page={{ contacts.next_page_number }}">next</a>
{% endif %}
Run Code Online (Sandbox Code Playgroud)

django pagination

65
推荐指数
6
解决办法
2万
查看次数

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

我使用文档中的代码来分页数据:

try:
    data = paginator.page(request.GET.get('page'))
except PageNotAnInteger:
    page = 1
    data = paginator.page(1)
except EmptyPage:
    data = paginator.page(paginator.num_pages)
Run Code Online (Sandbox Code Playgroud)

还有一个页面:

<div class="pagination">
      <span class="step-links">
          {% if data.has_previous %}
              <a href="?page={{ data.previous_page_number }}">previous</a>
          {% endif %}

          <span class="current">
              <b>Page</b> {{ data.number }} of {{ data.paginator.num_pages }}
          </span>

          {% if data.has_next %}
              <a href="?page={{ data.next_page_number }}">next</a>
          {% endif %}

      </span>
    </div>
Run Code Online (Sandbox Code Playgroud)

但是这里有一个错误:当url包含查询字符串并且单击寻呼机时,原始查询字符串会丢失.例如:

example.com?var1=33&var2=44
Run Code Online (Sandbox Code Playgroud)

然后当点击"page2"时,网址就会变为

example.com?page=2  # var1=33&var2=44 is lost
Run Code Online (Sandbox Code Playgroud)

代替:

example.com?var1=33&var2=44&page=2 
Run Code Online (Sandbox Code Playgroud)

我既没有找到标准的,也没有找到解决它的简单方法.我怎样才能做到这一点?

更新:

当然,参数的名称,它们的值以及它们是否存在尚不清楚.

python django

8
推荐指数
2
解决办法
3141
查看次数

标签 统计

django ×2

pagination ×1

python ×1