如何解决分页清除了我的其他搜索参数
对于我在 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 }}">«</a></li>
{% else %}
<li class="disabled"><span>«</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 }}">»</a></li>
{% else %}
<li class="disabled"><span>»</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 }}">
所有其他链接都类似。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。