分页清除了我的其他搜索参数

问题描述

对于我在 Django 中的程序,我的 HTML 文件中有以下分页部分

{% if player_list.has_other_pages %}
  <ul class="pagination" style="border: 1px solid #ddd;">
    {% if player_list.has_prevIoUs %}
      <li><a href="?ppage={{ player_list.prevIoUs_page_number }}">&laquo;</a></li>
    {% else %}
      <li class="disabled"><span>&laquo;</span></li>
    {% endif %}
    {% for i in player_list.paginator.page_range %}
      {% with ppage_number=player_list.number radius=8 %}
      {% if i >= ppage_number|sub:radius %}
      {% if i <= ppage_number|add:radius %}
        {% if player_list.number == i %}
          <li class="active" style="border: 1px solid #ddd;"><span>{{ i }} <span class="sr-only">(current)</span></span></li>
        {% else %}
          <li style="border: 1px solid #ddd;"><a href="?ppage={{ i }}">{{ i }}</a></li>
        {% endif %}
      {% endif %}
      {% endif %}
      {% endwith %}
    {% endfor %}
    {% if player_list.has_next %}
      <li><a href="?ppage={{ player_list.next_page_number }}">&raquo;</a></li>
    {% else %}
      <li class="disabled"><span>&raquo;</span></li>
    {% endif %}
  </ul>
{% endif %}

因此,当我按下任何分页按钮时,它会使用搜索参数 ppage=###(其中 ### 是某个数字)调用页面。但是,它会清除我在 url 中按下按钮的所有搜索参数,无论如何我可以让它保留其他搜索参数吗?

这是被调用的视图函数

.
.
.
# player request parameters
    player_page = request.GET.get('ppage',1)
    player_first_name = request.GET.get('pfname',None)
    player_last_name = request.GET.get('plname',None)
    player_is_active = request.GET.get('pisactive',None)

    # filter based on search parameters if exist and page
    players = Player.objects.all()
    if (player_first_name != None and player_first_name != ''):
        players = players.filter(first_name__contains=player_first_name)
    if (player_last_name != None and player_last_name != ''):
        players = players.filter(first_name__contains=player_last_name)
    if (player_is_active != None and player_is_active != ''):
        players = players.filter(first_name__contains=player_is_active)
    player_paginator = Paginator(players,50)
.
.
.

如果url有?pfname=Chris,按下按钮后搜索参数消失

解决方法

您需要将 QueryDict 传递回模板并重新呈现查询字符串,page 部分除外,因此:

def my_view(request):
    qd = request.GET.copy()
    qd.pop('ppage',None)
    # …
    context = {
        # …,'qd': qd
    }
    return render(request,'name-of-template.html',context)

在模板中,然后使用以下内容呈现网址:

<a href="?ppage={{ i }}&{{ qd.urlencode }}">

所有其他链接都类似。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...