gpt4 book ai didi

python - 当搜索和结果位于同一页面时分页

转载 作者:行者123 更新时间:2023-12-01 07:02:30 26 4
gpt4 key购买 nike

我有一个模板,用户可以在其中传递查询并选择几个复选框(范围为 1-100)。然后,我的 View 执行以下操作:

def search(request):
results_list = search(request.GET.get("q", ""), request.GET.getlist("c"))

# Pagination
paginator = Paginator(results_list, 10)
page = request.GET.get("page")
results = paginator.get_page(page)

return render(
request,
"web/search/show.html",
{
"query": query,
"results": results,
},
)

出现此问题是因为搜索和结果显示都发生在同一页面上。因此,当我想在我的模板中包含分页时,我必须执行以下操作:

<div class="pagination">
<div class="step-links">
{% if results.has_previous %}
<a href="?page={{ results.previous_page_number }}&{{request.GET.urlencode}}" class="prev-page-link">Previous</a>
{% endif %}

{% if results %}
<span class="current">
Page {{ results.number }} of {{ results.paginator.num_pages }}
</span>
{% endif %}

{% if results.has_next %}
<a href="?page={{ results.next_page_number }}&{{request.GET.urlencode}}" class="next-page-link">Next</a>
{% endif %}
</div>
</div>

请考虑使用request.GET.urlencode,因为当用户想要转到上一页或下一页时,相同的查询复选框 需要通过。但是,当用户越过第二页时,这会产生错误,因为 ?page=3&page=2 不断堆积。有人可以指出我解决这个问题的正确方向吗?

最佳答案

一个简单的解决方案是重复链接中需要处理的每个 GET 参数,而不是使用完整的查询字符串,例如:

<a href="?page={{ results.next_page_number }}&q={{request.GET.q|urlencode}}&c={{request.GET.c|urlencode}}" class="next-page-link">Next</a>

一个更优雅的解决方案是创建一个 Django 模板标签来根据查询字符串的当前状态构建 URL,类似于本文中描述的内容:Dealing With QueryString Parameters .

关于python - 当搜索和结果位于同一页面时分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58574626/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com